반응형
서블릿 라이프사이클
- 첫 번째 요청일 경우, 객체를 생성하며 init( ) 메소드를 호출한다.
- 이 후 작업이 실행 될 때마다 service() 메소드가 요청한 HTTP Type에 따른 doGet(), doPost() 메소드 호출
- 최종적으로 서블릿이 서비스 되지 않을 때 destroy() 메소드가 호출.
** destroy() 는 보통 서버가 종료되었을 때, 서블릿의 내용이 변경되어 재 컴파일 될 때 호출한다
public class LifeCycleTestServlet extends HttpServlet {
/* 메소드의 호출 횟수를 카운트 하기 위한 용도의 필드 */
private int initCount = 1;
private int serviceCount = 1;
private int destroyCount = 1;
/* 서블릿의 요청이 최초인 경우 한 번 동작하는 메소드 */
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("xml 매핑 init() 메소드 호출 : " + initCount++);
}
/* 서블릿 컨테이너에 의해 호출 되며 최초 요청시에는 init() 이후에 동작하고,
* 두 번째 요청부터는 바로 service()를 호출 */
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException{
System.out.println("xml 매핑 service() 메소드 호출 : " + serviceCount++);
}
/* 컨테이너가 종료 될 때 호출 되는 메소드이며 주로 자원을 반납하는 용도로 사용 */
@Override
public void destroy() {
System.out.println("xml 매핑 destory() 메소드 호출 : " + destroyCount++);
}
}
/* loadOnStartup에 우선 순위를 지정하면(낮을 수록 우선 순위가 높다)
* 서버가 start 될 때 인스턴스를 생성하고 init()을 호출 */
@WebServlet(value="/annotation-lifecycle", loadOnStartup = 1)
public class LifeCycleTestServlet extends HttpServlet{
/* 메소드의 호출 횟수를 카운트 하기 위한 용도의 필드 */
private int initCount = 1;
private int serviceCount = 1;
private int destroyCount = 1;
/* 서블릿의 요청이 최초인 경우 한 번 동작하는 메소드 */
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("annotation 매핑 init() 메소드 호출 : " + initCount++);
}
/* 서블릿 컨테이너에 의해 호출 되며 최초 요청시에는 init() 이후에 동작하고,
* 두 번째 요청부터는 바로 service()를 호출 */
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException{
System.out.println("annotation 매핑 service() 메소드 호출 : " + serviceCount++);
}
/* 컨테이너가 종료 될 때 호출 되는 메소드이며 주로 자원을 반납하는 용도로 사용 */
@Override
public void destroy() {
System.out.println("annotation 매핑 destory() 메소드 호출 : " + destroyCount++);
}
}
반응형
'백엔드 과정 > Servlet' 카테고리의 다른 글
[Servlet] Response 응답 확인하기 (0) | 2022.03.06 |
---|---|
[Servlet] GET/POST 방식에 따른 서블릿 메소드 (0) | 2022.03.05 |
[Servlet] 서블릿 개요 (0) | 2022.03.04 |
[Servlet] tomcat 설치 및 개발환경 구축 (0) | 2022.03.04 |
[Servlet] Web Server / WAS (0) | 2022.03.02 |