서블릿 이란 자바를 사용하여 웹을 만들기 위해 필요한 기술이다. 웹을 만들기 위해서는 클라이언트가 어떤 요청을 하면 그에 대한 결과(ex. 페이지 or JSON) 를 전송해주어야 하는데 그러한 것들을 제공하는 것이 서블릿이다. 그래서 서블릿은 보통 자바로 구현된 CGI 라고 한다.

Servlet 의 특징

일반적으로 웹 서버는 정적인 페이지만 제공한다. 그렇기 때문에 동적인 페이지를 제공하기 위해서 웹 서버는 다른 곳에 도움을 요청하여 동적인 페이지를 작성해야 한다. 동적인 페이지로는 임의의 이미지만을 보여주는 페이지와 같이 사용자가 요청한 시점에 페이지를 생성해서 전달해 주는 것을 의미한다. 여기서 웹 서버가 동적인 페이지를 제공할 수 있도록 도와주는 어플리케이션서블릿 이며, 동적인 페이지를 생성하는 어플리케이션이 CGI 이다.

Servlet 동작 방식

Untitled

  1. 사용자(클라이언트)가 URL 을 입력하면 HTTP Request 가 Servlet Container 로 전송한다.
  2. 요청을 전송받은 Servlet Container 는 HttpServletRequest, HttpServletResponse 객체를 생성한다.
  3. web.xml 을 기반으로 사용자가 요청한 URL 이 어느 서블릿에 대한 요청인지 찾는다.
    1. web.xml 에는 어떤 URL 에 대한 요청이 들어왔을 때 어느 서블릿 객체로 이동해야 하는지에 대한 설정이 적혀있다.
  4. 해당 서블릿에서 service 메소드를 호출한 후 클라이언트의 GET, POST 여부에 따라 doGet() 또는 doPost() 를 호출한다.
    1. 개발자는 원하는 URL 에 해당하는 서블릿을 생성한다.
    2. 해당 서블릿 객체 내에서 원하는 Method 에 따라 doGet() 혹은 doPost() 등의 메소드를 정의한다.
  5. doGet() or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse 객체에 응답을 보낸다.
    1. doGet() 등의 메소드를 이용하여 사용자에게 보여줄 페이지를 만든다.
  6. 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.
    1. JVM 에게 전달한다.