Servlet
🧩 Servlet 이란
정의
Servlet은 Java 기반 웹 애플리케이션에서 HTTP 요청을 받아 처리하고 응답을 만드는 서버 측 컴포넌트이다. 보통 서블릿 컨테이너 안에서 동작하며, 웹 요청 처리의 기본 단위가 된다.
- 동적 웹페이지나 API 응답을 만들 때 사용한다.
- 컨테이너가 서블릿의 생성과 호출 흐름을 관리한다.
HttpServlet을 상속해서doGet(),doPost()같은 메서드를 구현하는 경우가 많다.
⚙️ 동작 흐름

- 클라이언트가 요청을 보낸다.
- 서블릿 컨테이너가 요청을 받고 알맞은 서블릿을 찾는다.
- 필요하면
init()을 호출해 서블릿을 초기화한다. - 요청마다
service()를 호출하고, HTTP 메서드에 따라doGet(),doPost()등으로 분기한다. - 처리 결과를 응답으로 돌려준다.
- 종료 시점에는
destroy()를 호출한다.
🧪 Servlet Interface
package javax.servlet;
import java.io.IOException;
public interface Servlet {
public void init(ServletConfig config) throws ServletException;
public ServletConfig getServletConfig();
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException;
public String getServletInfo();
public void destroy();
}
메서드 역할
init()은 서블릿 초기화 시 한 번 호출되고,service()는 요청마다 호출된다.destroy()는 서블릿이 종료될 때 한 번 호출된다.
✅ 특징
- 요청을 받으면 동적으로 응답을 생성한다.
- 서블릿 컨테이너 안에서 생명주기가 관리된다.
- HTTP 메서드별 처리를 분리하기 쉽다.
- MVC 구조에서 컨트롤러 역할로 활용할 수 있다.
- 세션, 쿠키, 인증 같은 웹 기능과 함께 쓰기 좋다.
⚠️ 주의사항
service()를 직접 구현하기보다 보통HttpServlet의doGet(),doPost()를 오버라이드해서 사용한다.- 서블릿 객체는 요청마다 새로 만들어지지 않고, 보통 하나의 인스턴스를 여러 요청 스레드가 공유한다.
- 멤버 변수를 잘못 사용하면 동시성 문제가 생길 수 있다.
📌 정리
- Servlet은 Java 웹 애플리케이션의 기본 서버 컴포넌트다.
- 서블릿 컨테이너가 생명주기와 요청 처리를 관리한다.
- Spring MVC의
DispatcherServlet도 이런 서블릿 구조 위에서 동작한다.
댓글남기기