Spring
서블릿(Servlet)의 생명주기(Lifecycle)
초코너무조코
2025. 2. 20. 11:52
728x90
1. 서블릿이란?
서블릿(Servlet)은 Java EE에서 웹 애플리케이션을 개발할 때 사용되는 서버측 컴포넌트입니다. 클라이언트의 요청을 받아 처리하고, 결과를 응답하는 역할을 합니다. 서블릿은 Java 클래스로 작성되며, 웹 컨테이너(예: Tomcat, Jetty)에 의해 실행됩니다.
2. 서블릿의 생명주기
서블릿의 생명주기는 웹 컨테이너가 서블릿 객체를 생성하고, 초기화하며, 요청을 처리하고, 종료하는 일련의 과정으로 이루어집니다. 주요 단계는 다음과 같습니다.
2.1 서블릿 객체 생성 (init() 호출)
- 서블릿이 처음 요청되거나 컨테이너가 시작될 때, 웹 컨테이너는 서블릿 클래스를 로드합니다.
- 서블릿 객체를 생성합니다.
- init(ServletConfig config) 메서드를 호출하여 서블릿을 초기화합니다.
예제:
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
System.out.println("서블릿이 초기화되었습니다.");
}
2.2 요청 처리 (service() 호출)
- 클라이언트가 요청을 보내면, 컨테이너는 service(HttpServletRequest request, HttpServletResponse response) 메서드를 호출합니다.
- service() 메서드는 요청의 HTTP 메서드(GET, POST 등)에 따라 doGet(), doPost() 등의 적절한 메서드를 호출합니다.
예제:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>안녕하세요, 서블릿입니다!</h1>");
}
2.3 서블릿 종료 (destroy() 호출)
- 웹 컨테이너가 종료되거나, 서블릿이 제거될 때 destroy() 메서드가 호출됩니다.
- destroy()는 리소스를 정리하는 역할을 합니다.
예제:
@Override
public void destroy() {
System.out.println("서블릿이 종료됩니다.");
}
3. 서블릿 생명주기 흐름 정리
1. 서블릿 클래스 로드 → 2. 서블릿 객체 생성 → 3. init() 실행 → 4. 요청 시 service() 실행 → 5. destroy() 실행 후 종료
4. 결론
서블릿의 생명주기는 init(), service(), destroy() 메서드를 중심으로 동작합니다. 이를 이해하면 서블릿을 효율적으로 관리하고 최적화할 수 있습니다. 또한, 서블릿의 동작 방식은 스프링 프레임워크의 서블릿 기반 컨트롤러(예: @RestController)에도 적용되므로 웹 개발에서 중요한 개념입니다!
728x90