이번 실습에서는 이클립스의 Dynamic Web Project에서 기본적인 서블릿 코드를 작성하고 실행하는 일련의 과정을 살펴 본다.

실습을 통해 서블릿 코드의 기본 구조와 구현 방법, 톰캣을 통한 실행 방법을 배운다.

실습 내용

서블릿 생성 메뉴

서블릿은 자바 코드로 작성하기 때문에 프로젝트의 src 폴더에서 오른쪽 마우스를 눌러 New -> Servlet 을 선택 한다.

서블릿 생성

서블릿 클래스 정보 입력

기본적으로 자바 클래스와 동일하다. Super class 는 기본적으로 javax.servlet.http.HttpServlet 이며 필요에 따라 커스텀 구현된 서블릿을 사용할수도 있다.

서블릿 클래스 생성

서블릿 세부 정보 입력

다음은 서블릿과 관련된 정보를 입력하는 부분으로 web.xml 혹은 애너테이션에 포함될 서블릿 정보이다.

서블릿 URL 매핑

중요한 것은 URL Mapping 이다. URL Mapping 은 서블릿을 호출하기 위한 URL을 지정하는 것으로 여러 URL 을 /, *, 확장자 등과 결합해 패턴 형식으로도 지정할 수 있다. 예를 들어 *.do 의 경우 이름과 상관없이 .do 로 끝나는 모든 요청에 실행한다는 의미가 된다.

여기서는 기본 설정값인 /HelloWorld를 선택하고 Edit 버튼을 눌러 좀더 간편한 이름인 /hello 로 변경한다.

추가 설정과 메서드 생성

다음은 서블릿 생성의 마지막 단계로 Modifier 지정과 인터페이스 추가가 가능하다. 그 외 기본적으로 생성할 메서드들을 선택하는 부분이 있다.

서블릿 URL 매핑

Constructor from super class, Inherited abstract class,doGet, doPost 는 기본적으로 선택되어 있다. 그외 필요한 메서드들을 선택할 수 있다. 이 페이지의 설정은 추후 서블릿 클래스 코드에서 언제든지 직접 수정이 가능한 부분들이다.

기본 생성된 코드를 보면 앞에서 설정한 내용들이 모두 반영된 것을 알 수 있다.

@WebServlet 애너테이션

초기화 파라미터를 설정했다면 이곳에 함께 표시된다.

@WebServlet(description = "My first servlet", urlPatterns = { "/hello" })
public class HelloWorld extends HttpServlet {

doGet()

GET 요청을 처리하는 메서드로 배운것 처럼 request, response 를 인자로 한다. ServletException 과 IOException 을 throws 하고 있기 때문에 호출하는 쪽에서 예외처리를 해야 한다. 기본적으로 서블릿 컨테이너 쪽에서 예외 처리가 이루어진다.

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

기본 생성된 코드를 지우고 다음과 같이 수정 한다.

		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.append("<!doctype html><html><head><title>Hello World Servlet</title></head><body>")
		.append("<h2>Hello World !!</h2><hr>")
		.append("현재 날짜와 시간은: "+java.time.LocalDateTime.now())
		.append("</body></html>");

doPost()

POST 요청을 처리하는 메서드이다. 단순히 doGet()을 호출하도록 되어 있다. Rest API 구현이 아닌경우 서버에서는 GET, POST 를 내부적으로 동일하게 처리한다.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

실행은 서블릿 클래스를 선택후 실행 버튼을 누르거나 오른쪽 마우스 -> Run as -> Run on Server 를 선택해 실행하면 된다. JSP와 마찬가지로 서버 런타임 선택 화면에서 프로젝트 생성시 등록한 Tomcat v9.0을 선택하고 실행하면 된다.

서블릿 실행 결과