본문 바로가기
백엔드/JSP & Servlet

[Servlet] 서블릿(Servlet) 생명주기 (Servlet Life Cycle)

by 책 읽는 개발자_테드 2021. 12. 14.
반응형

서블릿 생명주기는 서블릿이 로딩 후 시작되는 것에서 부터 소멸될 때까지 수명 동안에 진행디는 일련의 단계로 설명할 수 있다.

 

1) 서블릿 로딩

2) 서블릿 인스턴스 생성

3) init() 메서드 한 번 호출

4) 각 클라이언트 요청에 대하여 반복적으로 service() 메서드 호출

5) destroy() 메서드 호출

 

1. 서블릿 로드


클래스로더가 서블릿 클래스를 로드한다. 서블릿 클래스는 웹 컨테이너가 서블릿에 대한 첫 번째 요청을 수신할 때 로드된다.

 

2. 서블릿 인스턴스 생성


모든 서블릿 클래스가 로드되면, 서블릿 컨테이너는 각 서블릿 클래스의 인스턴스를 생성한다.

서블릿 인스턴스는 서블릿 라이프 사이클에서 한 번만 생성된다.

서블릿에 대한 모든 요청은 동일한 서블릿 인스턴스에서 실행된다.

 

3. init() 메서드 호출


모든 서블릿 클래스가 인스턴스화되면, 인스턴스화된 각 서블릿에 대해 init() 메서드가 호출된다. 이 메서드는 서블릿을 초기화한다.

init() 메서드는 서블릿 생명 주기 중 한 번만 호출된다.

 

public void init(ServletConfig config) throws ServletException

4. service() 메서드 호출


요청/응답(request/response)를 처리하는 메서드다. 웹 서버는 서블릿에 대한 요청을 수신하면, service() 메서드를 호출하는 새로운 스레드를 생성한다.

 

서블릿이 Genericservlet이면 요청은 service() 메서드 자체에 의해 제공되고,

서블릿이 HttpServlet이면 service() 메서드는 요청을 수신하고 요청 유형(GET, POST, PATCH 등)에 따른 핸들러 메서드에 전달한다.

 

예를 들어 Get 요청인 경우 service() 메서드는 요청 매개변수와 함께 doGet() 메서드를 호출하여 요청을 doGet() 메서드로 전달한다.

 

 

service() 메서드는 서블릿 수명 주기 동안 여러 번 호출할 수 있다. 서블릿이 파괴되지 않는 한 각 클라이언트 요청에 대해 service() 메서드가 호출된다. 

 

생명 주기 5단계 중 여러 번 실행되는 유일한 단계다.

 

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException

 

https://velog.io/@woo00oo/%EC%84%9C%EB%B8%94%EB%A6%BF

 

5. destroy() 메서드 호출


서블릿 컨테이너가 종료되면, 모든 서블릿을 언로드하고 초기화된 각 서블릿에 대해 destroy() 메서드를 호출한다.

 

public void destroy()

 

출처

https://beginnersbook.com/2013/05/servlet-life-cycle/

 

 

 

반응형

댓글