JSP & Servlet

ContextListener

Jungsoomin :) 2020. 7. 17. 16:32

웹 어플리케이션이 시작되거나 종료되는 시점에 특정 클래스의 메서드를 실행하는 기능을 제공하는데, 이때 사용하는 것이 ContextListener이다. ContextListener를 구현하고 메서드를 재정의 함으로 사용한다.

 

  1. DB 커넥션처럼 app 구동시에 필요한 자원들은 contextInitialized 메서드에 정의

  2. DB커넥션풀 종료,자원 반납등에 필요한 자원들은 contextDestroyed 메서드에 정의

@WebListener
public class MyAppListener implements ServletContextListener {

    public void contextDestroyed(ServletContextEvent sce)  { 
        System.out.println("어플리케이션 종료됨!");
    }


    public void contextInitialized(ServletContextEvent sce)  { 
//    	쓰레드에 영향을 받지않음.
    	ServletContext app = sce.getServletContext();
    	
//    	루트 컨텍스트를 저장해 놓으면 편함!
    	app.setAttribute("rootPath", app.getContextPath());
    	
    	
         System.out.println("어플리케이션 시작됨!");
    
         System.out.println(app.getInitParameter("logEnabled"));
         System.out.println(app.getInitParameter("debugLevel"));
    }
	
}

Listener 클래스를 구현했다면, 해당 클래스를 등록해야하는데, @WebListener 에노테이션, 혹은 web.xml 에서 등록한다.

 

<listener>태그로 시작, <listener-class> 태그로 클래스를 정의한다.

 

application 영역에 속성을 저장해 놓을 수도 있으며, <context-param>태그에 정의된 속성도 가져올 수 있다.

	<context-param>
  		<param-name>logEnabled</param-name>
  		<param-value>true</param-value>
  	</context-param>
  	
  	<context-param>
  		<param-name>debugLevel</param-name>
  		<param-value>5</param-value>
  	</context-param>
    
    <listener>
    	<listner-class>파라미터명</listener-class>
    </listener>
    	
        <context-param>
        	<param-name>파라미터이름</param-name>
            <param-value>값</param-value>
        </context-param>