서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다.
자바로 구현된 CGI(Common Gate Interface)이다.
Servlet의 주요 특징
- 클라이언트의 요청에 동적으로 작동하는 웹 컴포넌트
- HTML을 사용하여 응답
- Java의 스레드를 이용하여 동작 (멀티쓰레딩 지원)
- MVC 패턴에서의 컨트롤러로 이용
- HTTP 프로토콜을 지원하는
javax.servlet.http.HttpServlet클래스를 상속 - UDP 보다 느린 속도(?)
- HTML 변경 시 Servlet을 다시 컴파일 → 이를 해결하기 위해 JSP, Thymeleaf와 같은 템플릿 엔진 사용
Servlet의 생명주기
Servlet의 생명주기는 해당 인터페이스의 메서드를 통해 관리된다.

init(): 서블릿이 처음 생성될 때 한 번 호출되며, 초기화 작업을 수행합니다.service(): 클라이언트의 각 요청마다 호출되는 메서드입니다. Http Method에 맞는 기능을 동작합니다.destroy(): 서블릿이 제거될 때 한 번 호출되며, 자원을 해제하거나 종료 작업을 수행합니다.
Servlet Container
서블릿은 스스로 실행되는 프로그램이 아니라 Servlet Container에 의해 생성되고 관리되며 실행된다.
Servlet Container는 클라이언트의 HTTP 요청을 받아 적절한 Servlet을 찾아 실행하고, Servlet이 생성한 응답을 다시 클라이언트에게 전달하는 역할을 수행한다.
대표적인 Servlet Container로 Apache Tomcat, Jetty, Undertow 등이 있다.
Servlet Container의 주요 역할
- HTTP 요청/응답 처리
- Servlet 생명주기 관리
- 요청과 Servlet 매핑
- 멀티스레드 요청 처리
Servlet Container는 Servlet 실행뿐 아니라 다음과 같은 웹 애플리케이션 기능도 제공
- Session 관리
- Cookie 처리 지원
- Filter 관리
- Listener 관리
- 보안 및 인증 관련 기능
- ServletContext 관리
추가 포인트

