웹 어플리케이션 감시 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() 호출
     */
    
    
    
    

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading