WEB

Servlet 구조 분석(3) - HttpServlet

긍.응.성 2020. 4. 18. 16:24
반응형

Servlet 구조 분석(2) - GenericServlet에 이어 Servlet의 구현체이며 HTTP protocol을 지원하는 HttpServlet에 대해 분석해보았습니다.

 

Servlet 구조 분석(2) - GenericServlet

Servlet 구조 분석(1) - Servlet, ServletConfig, ServletContext에 이어 Servlet의 구현체인 GenercServlet에 대해 분석해보았습니다. Servlet 구조 분석(1) - Servlet, ServletConfig, ServletContext Spring MV..

ckddn9496.tistory.com

5. abstract class HttpServlet

GenericSerlvet이 generic 한 protocol을 위한 서블릿 클리스라면 HttpServlet은 HTTP protocol 사용을 위해 만들어진 서블릿 클래스이다.

HttpServlet을 상속한 후 Http Method에 맞추어 doGet()이나 doPost()를 구현하면 쉽게 HTTP 프로토콜에 맞는 서블릿을 사용할 수 있기 때문에, 굳이 Servlet interface의 service service를 구현하여 사용할 필요가 없다 (각 서블릿마다 메서드를 나누고 처리하는 필요하다).

    // GET, POST, PUT, DELETE 등과 같은 HTTP 메서드를 지원하는 doGet, doPost 메서드가 존재하며
    // 아래의 코드는 HttpServlet에 구현된 doGet 메서드이다
    // 사용자가 doGet 메서드를 오버라이드하지 않을 경우 두가지 에러코드를 반환한다.
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String protocol = req.getProtocol();
        String msg = lStrings.getString("http.method_get_not_supported");
        if (protocol.endsWith("1.1")) {
            resp.sendError(405, msg);
            // 405 Method Not Allowed - 요청한 메서드는 사용할 수 없다
        } else {
            resp.sendError(400, msg);
            // 요청의 첫 줄 (Request Line)이 HTTP/1.1 로 끝나지 않을 경우
            // 400 Bad Request - 잘못된 문법 
        }

    }

※ 참고자료

반응형