서블릿 생명주기 (Servlet LifeCycle)

  • 서블릿은 WAS 내 서블릿 엔진(컨테이너)에 의해 실행된다.
  • 클라이언트로부터 서블릿 요청을 받으면 WAS는 해당 서블릿이 메모리에 있는지 확인한다.
    • 해당 서블릿이 처음 실행되어 메모리에 없다면 - 서블릿 클래스를 메모리에 올리고 init() 메서드와 service() 메서드를 실행
    • 해당 서블릿이 이미 메모리에 있다면 - service() 메서드 실행
  • WAS가 종료되거나 웹 어플리케이션이 갱신되어 서블릿 종료 요청이 있을 경우 destroy() 메서드를 실행한다.

 


서블릿의 생명주기 메서드

 

 

메서드 이름 메서드 실행 시점 실행횟수 역할
init() 클라이언트로부터 최초로 서블릿 요청이 있을 때 1 서블릿 초기화
service() 클라이언트로부터 요청이 있을 때마다 여러 번 요청시 처리되는 내용
destroy() 서블릿 객체가 메모리에서 삭제될 때, 서버 중지 1 자원 해제

 

1) init()

클라이언트의 첫 요청이 있을 때 딱 한 번만 호출되는 메서드

 

2) service()

  • 스레드에 의해 호출되는 메서드
  • 첫 요청시 init()이 호출되고 난 후에 바로 service()가 호출된다.
  • 두 번째 요청부터는 init()을 거치지 않고 바로 service()가 호출된다.
  • service() 메서드에서는 요청 메서드를 분석해서 get방식을 요청하면 doGet()을 호출하고, post방식을 요청하면 doPost()를 호출하고, delete방식을 요청하면 doDelete()를 호출하고, put방식을 요청하면 doPut() 메서드를 호출한다.
요청방식 호출 메서드
get방식 doGet()
post방식 doPost()
delete방식 doDelete()
put방식 doPut()
String method = req.getMethod();
      if(method.equals("GET")){
      	 doGet(req,res);
      }else if(method.equals("POST")){
         doPost(req,res);
      }else if(method.equals("DELETE")){
         doDelete(req,res);     
      }...

 

3) destroy()

서버가 종료될 때 딱 한 번 호출되는 메서드

 


서블릿의 생명주기 예제

 

 

[실행 결과]

+ Recent posts