웹 어플리케이션 감시 ServletContextListener
톰켓이 실행될때 실행되는 코드
package kr.gov.servletcontextlistener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ServletListener implements ServletContextListener {
//톰켓서버 시작할때 자동 호출
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized() 호출");
}
//톰켓서버 중지될때 자동 호출
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("contextDestroyed() 호출");
}
/*
* 위 2개의 콜백 메서드는 다른 웹애플리케이션(타 프로젝트)의 실행될때와
* 종료될때 같이 실행되기 때문에 위의 코드를 보여주기 원하지않으면 주석처리하면 됨.
*/
}
web.xml로 등록하는 방법
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Chap04_Servlet-3</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 첫번째 방법 -->
<!-- <servlet>
특정 서블릿을 지정하는 코드
<servlet-name>initParam</servlet-name>
<servlet-class>kr.gov.httpservlet2.InitParam</servlet-class>
특정서블릿(kr.gov.httpservlet2.InitParam)에만 적용된는 부분이다.
초기화 파라미터를 init-param테그를 이용하여 지정한다.
<init-param>
<param-name>id</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>pw</param-name>
<param-value>0217</param-value>
</init-param>
<init-param>
<param-name>path</param-name>
<param-value>C:\\workspace-jsp</param-value>
</init-param>
</servlet>
서블릿 매핑코드
<servlet-mapping>
<servlet-name>initParam</servlet-name>
<url-pattern>/InitP</url-pattern>
</servlet-mapping> -->
<!-- 하나의 프로젝트 안에 여러 서블릿파일에서 함깨 공유하면서 사용할수 있도록
context-param테그를 이용해서 파라미터 값을 설정함.
특정 서블릿 매핑하는 코드가 없는 것을 알수 있다, -->
<context-param>
<param-name>id</param-name>
<param-value>scott55</param-value>
</context-param>
<context-param>
<param-name>pw</param-name>
<param-value>tiger55</param-value>
</context-param>
<context-param>
<param-name>path</param-name>
<param-value>C:\\workspace-jsp</param-value>
</context-param>
<listener>
<listener-class>kr.gov.servletcontextlistener.ServletListener</listener-class>
</listener>
</web-app>
다른 프로젝트에서도 콜백은 불려진다.
ServletContextListener 어노테이션으로 등록하는 방법
@WebListener
package kr.gov.servletcontextlistener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class ServletListener implements ServletContextListener {
//톰켓서버 시작할때 자동 호출
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized() 호출");
}
//톰켓서버 중지될때 자동 호출
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("contextDestroyed() 호출");
}
/*
* 위 2개의 콜백 메서드는 다른 웹애플리케이션(타 프로젝트)의 실행될때와
* 종료될때 같이 실행되기 때문에 위의 코드를 보여주기 원하지않으면 주석처리하면 됨.
*/
}
/*
* 서블릿의 실행 순서(리스너 포함)
*
* 1. contextInitialized() 호출
* 2. 생성자 호출
* 3. initPostConstructor() 선처리
* 4. init() 호출
* 5. service() 호출 -실제내용 클라이언트 요청 처리 doGet()호출 doPost()호출
* 6. destroy() 호출
* 7. destroyPredestroy() 후처리
* 8. contextDestroyed() 호출
*/