Servlet 코드 분석

HH_Nebula·2023년 1월 19일
0

서블릿 기본 구조

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // ...
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // ...
    }

}
  • @WebServlet 어노테이션
    현재 클래스가 서블릿 클래스라는 것을 컨테이너에 알리고 URL Mapping을 진행한다.

  • doGet()
    GET 요청을 처리하는 메서드

  • doPost()
    POST 요청을 처리하는 메서드

doGet()

GET 요청을 처리하는 메서드로 request, response를 parameter로 한다.
ServletException과 IOException을 throws로 하기 있기 때문에 호출하는 쪽에서 예외처리를 해줘야 한다.

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.getWriter().append("served at: ").append(request.getContextPath());
}
  • getWriter()
    java.io.PrintWriter 클래스 타입의 객체를 리턴한다.
  • request.getContextPath()
    웹 애플리케이션 경로를 리턴하는 메서드
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html; charset=utf-8");
    PrintWriter out = response.getWriter();
    out.append("<!DOCTYPE html>").append("<html>").append("<head>")...
}
  • 응답 콘텐츠 타입 설정과 한글 추력을 위해 response.setContentType() 메서드를 사용한다.
  • PrintWriter는 출력 스트림으로 클라이언트에 전달할 출력문 작성에 사용된다.
  • response.getWriter()로 출력 스트림을 가져온다.
  • 출력 스트림을 이용해 HTML 형식으로 데이터와 결합해 출력한다.

doPost()

POST 요청을 처리하는 메서드로 단순히 doGet()을 호출하도록 되어있다. REST API 구현이 아닌 일반 서블릿 구현이라면 GET, POST를 내부적으로 동일하게 처리한다. 물론 GET, POST를 구분해 처리해야하는 경우라면 당연히 별도의 코드로 구성할 수 있다.

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    doGet(request, response);
}
profile
공부하고 기록하고 복습하고

0개의 댓글