- 클라이언트의 요청을 처리하고, 그 결과를 반환하는 기술
- Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술
서블릿
이란 자바를 사용하여 웹을 만들기 위해 필요한 기술이다. 웹을 만들기 위해서는 클라이언트가 어떤 요청을 하면 그에 대한 결과(ex. 페이지 or JSON) 를 전송해주어야 하는데 그러한 것들을 제공하는 것이 서블릿이다. 그래서 서블릿은 보통 자바로 구현된 CGI
라고 한다.
Servlet 의 특징
- 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
- HTML 을 사용하여 요청에 응답한다
- Java Thread 를 이용하여 동작한다
- Thread 를 사용하여 처리하기 때문에 이전의 CGI 방식보다 효율적이다.
- 이전의 CGI 방식 : 요청마다 CGI 구현체 생성
- MVC 패턴에서 Controller 로 이용된다
- HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다
- UDP 보다 처리 속도가 느리다
- HTML 변경 시 Servlet 을 재컴파일해야 하는 단점이 있다
일반적으로 웹 서버는 정적인 페이지만 제공한다. 그렇기 때문에 동적인 페이지를 제공하기 위해서 웹 서버는 다른 곳에 도움을 요청하여 동적인 페이지를 작성해야 한다. 동적인 페이지로는 임의의 이미지만을 보여주는 페이지와 같이 사용자가 요청한 시점에 페이지를 생성해서 전달해 주는 것을 의미한다. 여기서 웹 서버가 동적인 페이지를 제공할 수 있도록 도와주는 어플리케이션이 서블릿
이며, 동적인 페이지를 생성하는 어플리케이션이 CGI 이다.
Servlet 동작 방식

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