서블릿은 자바 서버사이드 프로그램이다. 클라이언트의 요청을 동적으로 처리해주기 위해 사용된다. 주로 HTTP 요청을 처리해 응답을 주기위해 사용한다.
클라이언트의 요청이 들어오면 아래 후술할 서블릿 컨테이너가 요청을 처리할 서블릿 인스턴스를 생성해 요청을 처리한다.
자바에서 서블릿은 인터페이스로 작성되어 있고, 이 인터페이스를 구현해 개발한다.
서블릿은 기본적으로 init ⇒ service ⇒ destroy 의 라이프 사이클을 갖는다.

Servlet
하지만 실제로 사용자의 요청이 들어올때 servlet 을 매번 생성하지는 않는다. 인스턴스를 init , destroy 하는데 비용이 많이 들기 때문에 미리 servlet 을 생성해두고 요청이 들어올때마다 service 를 호출하는 방식으로 사용한다.
HttpServlet은 서블릿을 구현한 추상 클래스다. HTTP 요청을 처리하기 위한 서블릿으로 doGet, doPost 등의 메서드들이 있다.

HttpServlet
HttpServlet 는 개발자가 HTTP 프로토콜을 편하게 사용할 수 있도록 HttpServletRequest 요청객체와 HttpServletResponse 응답객체를 사용한다. 개발자는 이를 통해 HTTP 프로토콜을 직접 다루지 않아도 된다.
service 에서는 내부적으로 각 HTTP 요청 메서드를 확인해 요청에 맞는 메서드(doGet, doPost 등)를 호출한다.

HttpServlet.service