Java Spring

    26. Postman으로 REST API 테스트

    26. Postman으로 REST API 테스트

    REST API를 개발할때 테스트할 도구가 필요하다. CLI방식으로 가장 많이 사용되는 도구는 curl이, GUI환경에선 포스트맨이 가장 많이 사용된다. 우린 그중에서 포스트맨을 사용할것이다. 1️⃣ Postman 설치 및 워크스페이스 생성 포스트맨 설치 포스트맨은 윈도우, 맥, 리눅스 모두 지원하고 프로그램 설치 없이 웹에서 사용이 가능하다. 계정을 생성하면 설정 및 작업공간 동기화를 지원한다. 우선 포스트맨 다운로드 해주자. 그리고 다운로드 및 설치 하는동안 회원가입해주자. 포스트맨이 실행되면 작업 공간을 만들어 줄것이다. 2️⃣ 테스트 GET방식 테스트 그리고 localhost:포트/api/test를 입력해보자. POST방식 테스트 이번엔 GET > POST로 변경하자. API 설계에 따라 msg라..

    25. JAX-RS로 REST API 서버 구현

    25. JAX-RS로 REST API 서버 구현

    1️⃣ JAX-RS 설치 pom.xml에 즉 의존성 설정을 아래처럼 해주자. org.glassfish.jersey.containers jersey-container-servlet 2.33 org.glassfish.jersey.inject jersey-hk2 2.33 org.glassfish.jersey.media jersey-media-json-jackson 2.33 2️⃣ 서비스 구현 설정 클래스 생성 JAX-RS 서비스가 톰캣 jwbook의 웹 웹 어플리케이션에서 동작한다. 따라서 JAX-RS 서버 모듈을 톰켓에 등록해줄것이다. src/main/java 에 ch12 패키지를 생성 한후 RestConfig 클래스를 생성해주자. 코드는 아래와 같다. package ch12; import javax.ws...

    24. 한글 처리 필터 구현

    24. 한글 처리 필터 구현

    지금까지 서블릿에서 해왔던 한글 인코딩 처리 부분을 필터로 구현해볼것이다. 필터의 활용분얀은 매우 다양하며 잘설계해서 구현하면 여러 환경에서 코드 수정없이 추가기능을 부여하거나 제어하는 구조를 만들수있다. 우선 필터 동작 확인을 해볼것이다. ch10의 NewsController 서블릿에서 service()의 request.setCharacterEncoding()을 주석처리해주자. 1️⃣ 필터 클래스 생성 src/main/java 폴더에서 EncodingFilter 클래스를 만든후 아래처럼 코딩해주자. import javax.servlet.Filter; import javax.servlet.annotation.WebFilter; @WebFilter("*.nhn") public class EncodingFi..

    23. 리스너 종합

    23. 리스너 종합

    진행에 앞서 pom.xml과 web.xml을 수정해야한다. pom.xml은 아래의 의존성을 추가해주자. javax.servlet javax.servlet-api 4.0.1 provided web.xml은 아래처럼 코딩해주자. Archetype Created Web Application ch11.ListenerTestServlet 1️⃣ 리스너 클래스 생성 예제 생성 src/main/java에서 ListenerExam 으로 클래스를 생성해주자. 2️⃣ ServletContext 이벤트 구현 위에서 만든 ListenerExam을 아래와 같이 코딩해주자. import javax.servlet.ServletContextAttributeEvent; import javax.servlet.ServletContextA..

    22. 필터

    22. 필터

    1️⃣ 필터란? 개요 필터는 서블릿 필터라고 하며 웹 어플리케이션을 지원하기 위한 특수한 서블릿이다. 클라이언트 요청에 따라 서블릿이나 JSP가 실행되기전에 request, response객체를 조작이나 추가 처리가 가능하다. 기본적으로 특정 요청에만 작동하며, 여러개의 필터가 정해진 순서에 따라 배치될수 있다. 이때 클라이언트 요청 처리 이전에 먼저 실행된다. 리스너와 마찬가지로 단순히 기능만 구현하는 웹 프로그램의 경우 필터를 만들지 않아도 된다. 하지만 어플리케이션 설계 관점에서 유연하고 효과적인 어플리케이션 구현 및 운영이 필요하다면 필터에 대해 알아둬야한다. 필터는 기존 코드 변경없이 어플리케이션에서 공통적으로 사용할수있는 구현에 사용된다. 활용 분야 인증 : 로그인같은 공통기능을 개별 컨트롤러..

    21. 리스너

    21. 리스너

    1️⃣ 리스너란? 개요 리스너란 컨테이너에서 발생하는 이벤트를 중 특정 이벤트가 발생하면 실행되는 특수한 서블릿이다. 이를 이벤트 리스너라고한다. 웹 어플리케이션 실행에 필요한 정보를 제공하거나 톰캣 시작종료와 같은 특정 상황에 자동으로 동작하는 프로그램을 구현할때 사용한다. 이때 리스너는 서블릿과 마찬가지로 애너테이션 기반 코드로 작성할수있다. 먼저 리스너가 동작하기 위한 이벤트 종류와 프로그램API를 알아야한다. 리스너는 일반적인 형태의 서블릿이 아니다. 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스라고 보면 되겠다. 리스너는 생명 주기 변화와 Scope Object에서 관리하는 속성의 변화를 감지하고 해당 이벤트가 발생되면 실행되는구조다. 클라이언트의 요청에 따라 서블릿을 통해 Sessio..

    20. 뷰 구현

    20. 뷰 구현

    시작 페이지 화면에서 뉴스 목록을 보여주고 뉴스를 선택해 세부내용 보기/삭제를 할수있게 구성할것이다. 뉴스 등록 부분은 별도 페이지로 구성이 가능하나 뉴스 목록 아래에 등록 버튼을 두고 눌렀을때 입력 양식을 보여주고 등록하도록 구성하겠다. 디자인은 부트스트랩을 사용하고 분제 발생시 에러 메시지를 출력하는 부분이 포함되어있다. 데이터 출력은 EL과 JSTL을 사용할것이다. 1️⃣ newList.jsp 기본구조 메인화면으로 뉴스 목록을 보여주는 화면이다. [webapp]에 ch10 폴더 생성후 newsList.jsp를 만들어주자. 그후 부트스트랩에 접속하자. 그리고 CSS와 JS를 복사해주자. 복사한 내용은 뉴스 목록 [${status.count}] ${news.title}, ${news.date} × 에러..

    19. 컨트롤러 구현

    19. 컨트롤러 구현

    1️⃣ Init() 메소드 구현 NewsController 서블릿 클래스를 생성해주자. package ch10; import javax.servlet.*; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import java.io.IOException; @WebServlet("/news.nhn") @MultipartConfig(maxFileSize=1024*1024*2, location="c:/Temp/img") public class NewsController extends HttpServlet { private static final..