Servlet 기본 개념

IDEA를 활용한 첫 번째 Servlet 개발

IDEA Ultimate 2020.1.3 버전을 사용하여 웹 프로젝트를 생성하는 방법을 설명합니다.

필수 구성 요소

  • JDK 1.8
  • IDEA Ultimate 2020.1.3
  • Tomcat 9

설치 및 설정 절차

  1. 프로젝트 생성: File → New → Project → Java Enterprise 선택
    - Project SDK: JDK 1.8 지정
    - Java EE 8 선택
    - Application Server: 설치된 Tomcat 경로 설정
  2. 디렉토리 구성: WEB-INF 하위에 classes 및 lib 폴더 생성
    - Project Structure → Modules → Compiler output 경로 설정
    - Output path: WEB-INF/classes 지정
    - Dependency: lib 폴더 추가
  3. 서버 실행: Run → Edit Configuration → Tomcat 서버 설정
    - URL 형식: http://localhost:8080/프로젝트명_war_exploded

첫 번째 Servlet 구현

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        String userName = req.getParameter("username");
        String html = "<h1 style='color:blue'>안녕하세요, " + userName + "!</h1>";
        System.out.println("응답 데이터: " + html);
        PrintWriter out = res.getWriter();
        out.println(html);
    }
}

web.xml 구성

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/greet</url-pattern>
</servlet-mapping>

요청 파라미터 처리

public class UserInfoServlet extends HttpServlet {
    public void service(HttpServletRequest req, HttpServletResponse res) throws IOException {
        String method = req.getMethod();
        String name = req.getParameter("name");
        String[] skills = req.getParameterValues("skill");
        
        PrintWriter out = res.getWriter();
        out.println("<h1>요청 방식: " + method + "</h1>");
        out.println("<h1>이름: " + name + "</h1>");
        
        for(String skill : skills) {
            out.println("<h2>기술: " + skill + "</h2>");
        }
    }
}

Servlet 생명 주기

public class LifecycleServlet extends HttpServlet {
    public LifecycleServlet() {
        System.out.println("Servlet 객체 생성됨");
    }
    
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("초기화 완료");
    }
    
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        String input = req.getParameter("input");
        System.out.println("입력 값: " + input);
    }
    
    @Override
    public void destroy() {
        System.out.println("Servlet 객체 제거됨");
    }
}

애노테이션 기반 설정

@WebServlet("/annotation")
public class AnnotationServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        res.getWriter().println("애노테이션 기반 Servlet");
    }
}

시작 시 로딩 설정

@WebServlet(urlPatterns="/init", loadOnStartup=1)
public class InitServlet extends HttpServlet {
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("시작 시 초기화 중");
    }
}

태그: Servlet Java EE Tomcat Web Development Annotation

6월 29일 22:38에 게시됨