Maven, Servlet 3 기반의 Hello, World! 웹 프로젝트 작성하기

개요

소프트웨어 개발을 위한 제반 기술이 발전할수록 프로젝트의 생산성은 날이 갈수록 증가하고 있지만 반대로 그만큼 입문자들이 공부하기는 더 어려워졌다. 입문자가 본격적으로 프로젝트를 시작하려면 IDE, 빌드 관리 도구, 기반 라이브러리 선정부터 환경 설정까지 고려해야할 변수가 너무 많다. 이런 입문자들을 위해 지난 글에서 Eclipse 설치부터 Hello, World! 출력까지를 간단히 다뤄봤다. 이번 글에서는 Maven, Servlet 3 기반의 Hello, World! 웹 프로젝트를 작성해 보고자 한다. Eclipse IDE for Java EE Developers가 설치되어 있어야 한다. 설치 방법은 지난 글을 참고한다.

Hello, World! 프로젝트 생성

Eclipse를 실행하고 프로젝트를 생성할 차례이다. Maven Project를 생성하자.

  • 메뉴에서 File -> New -> Other -> Maven -> Maven Project를 선택하고 Next 버튼을 클릭한다.
  • Select project name and location 화면이 나온다. 기본값을 그대로 두고 Next 버튼을 클릭한다.
  • Archetype을 고를 차례이다. Filterwebapp을 입력하면 maven-archetype-webapp이 검색된다. 선택 후 Next 버튼을 클릭한다.
  • Group Id에는 com.jsonobject를, Artifact Id에는 WebAppExample을 입력하고 Finish 버튼을 클릭한다.
  • Maven Project가 생성되었다. 아직 Web Container가 설치되지 않아 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path오류가 발생할 것이다. 프로젝트명을 마우스 우클릭하고 Properties -> Project Facets -> Runtimes -> New -> Apache Tomcat v8.0 -> Next를 차례로 클릭한다.
  • Web Container 역할을 수행할 Tomcat 8을 설치할 경로를 지정할 차례이다. Download and Install 버튼을 클릭한 후 설치할 폴더를 지정한다.(ex: C:\Program Files\apache-tomcat-8) 다운로드 및 설치가 완료되면 Finish 버튼을 클릭한다.
  • 다시 Runtimes 화면에서 방금 설치한 Apache Tomcat v8.0을 체크하고 OK 버튼을 차례로 클릭하면 오류가 사라진 것을 확인할 수 있다.

프로젝트 빌드 및 컴파일

프로젝트가 생성되었으면 웹 브라우저의 요청에 대한 응답으로 Hello, World!을 출력할 클래스를 작성할 차례이다. 클래스 작성에 앞서 할 일이 많다.

  • Servlet 3.1의 기능을 사용하려면 관련 라이브러리를 임포트해야 한다. pom.xml 파일을 열고 /project/dependencies 엘레먼트에 아래 내용을 추가해야 한다. 저장 후 프로젝트명 우클릭하고 Run As -> Maven install을 실행한다.
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>
  • 다음은 Deployment Descriptor 역할을 수행하는 web.xml 파일을 Servlet 3.1 스펙에 맞게 수정할 차례이다. /src/main/webapp/WEB-INF/web.xml 파일을 열고 아래 내용으로 대체 후 저장한다.
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
</web-app>
  • 새로운 Servlet 클래스를 작성할 때마다 web.xml에 일일이 관련 내용을 추가해야 했던 Servlet 2.x와 다르게 Servlet 3.x에서는 어노테이션이 도입되면서 위와 같이 간단하게 선언하기만 하면 되기 때문에 무척 편리해졌다.
  • 이제 드디어 클래스를 작성할 차례이다. 메뉴에서 New -> Class을 실행한다.
  • Source folder에는 webappexample/src/main/java를, Package에는 com.jsonobject.webappexample.servlet을, Name에는 HelloWorldServlet을 입력하고 Finish 버튼 클릭 후 아래와 같이 작성한다.
package com.jsonobject.webappexample;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/helloworld")
public class HelloWorldServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<!DOCTYPE html>");
            out.println("<html><head></head><body>");
            out.println("<h1>Hello, World!</h1>");
            out.println("</body></html>");
        } finally {
            out.close();
        }
    }
}
  • 작성이 완료되었으면 실행할 차례이다. 메뉴에서 Run -> Run as -> Run on Server를 실행한다. 브라우저에서 http://localhost:8080/webappexample/helloworld 주소를 입력하면 화면에 Hello, World!가 출력되는 것을 확인할 수 있다.


저작자 표시 비영리 동일 조건 변경 허락
신고