2016년 9월 7일 수요일

35day / WEB / Servlet Life Cycle

http://jitendrazaa.com
Servlet LifeCycle에 대해서 알아보자!

  • Servlet Life Cycle
서블릿 컨테이너는 스레드와 서블릿 객체를 생성한다 (최초1회)

init()
서블릿 컨테이너가 서블릿 생성 후 초기화 작업 수행 (최초1회)
만약 클라이언트 요청 처리전 준비할 작업 있을 때 사용할 수 있다.

service()
클라이언트가 요청할 때 마다 호출되는 메서드

destroy()
서블릿컨테이너 종료 / 웹앱 중지시 해당 서블릿을 비활성화 할때 호출
서비스 수행시 확보했던 자원 해제 or 데이터를 저장하는 마무리 작업
예) servlet 수정 , 서버 재가동 (마지막 1번)

  • ServletConfig
Servlet 생성시 초기에 필요한 데이터를 web.xml에 기술하여
ServletConfig클래스 메소드 이용접근 (Init-param)
Servlet객체가 일하는데 필요한 정보를 가지고 있는 객체
Web Container가 생성하여 Servlet객체 init() 호출 시 주입 
Servlet객체당 하나씩 생성된다. 

이용방법
Servlet 객체가 사용할 초기파라미터 설정
<servlet>태그의 sub태그 <init-param> 을 이용해 설정 
  • ServletContext
여러 servlet에서 특정 데이터를 공유해야하는 경우 context parameter 사용하여
Web.xml에 기술하고 servlet에서 공유하며 사용 할 수 있음 (context-param)
Web Application 이 일하는데 필요한 정보를 가지고 있는 객체
Web Application이 처음 실행되는 시점에 Web Container가 생성
Servlet의 getServletContext() 를 통해 참조 Web Application당 하나 생성된다.

이용방법
Application 내 모든 Servlet이 사용할 수 있는 초기 파라미터 설정
<context-param> 태그 이용 

예제
public class LifeCycleServlet extends HttpServlet {
       
    * 객체 생성은 단 한번 실행된다 
    public LifeCycleServlet() {
        super();
        System.out.println("LifeCycleServlet 객체생성");
    }
     * 서블릿 객체 생성 후 단 한번 실행 
    @Override
    public void init() throws ServletException {
        System.out.println("init() 메서드 실행");
    }
     * service 계열 메서드는 클라이언트 요청시마다 실행되어 응답한다 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("service 메서드 실행 : doGet()");
    }
     * 서블릿 객체가 해제 직전 ( 즉 WAS 종료 전 ) 한번 호출 
    @Override
    public void destroy() {
        System.out.println("destroy()");
    }    
}
cs

0 개의 댓글:

댓글 쓰기