웹 어플리케이션이 시작되거나 종료되는 시점에 특정 클래스의 메서드를 실행하는 기능을 제공하는데, 이때 사용하는 것이 ContextListener이다. ContextListener를 구현하고 메서드를 재정의 함으로 사용한다.
-
DB 커넥션처럼 app 구동시에 필요한 자원들은 contextInitialized 메서드에 정의
-
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>
'JSP & Servlet' 카테고리의 다른 글
커스텀태그의 몸통 내용 처리방식 (0) | 2020.07.20 |
---|---|
태그파일을 이용한 커스텀태그 구현 (0) | 2020.07.20 |
CharacterEncodingFilter (0) | 2020.07.17 |
Servlet 수행 후 Filter를 거쳐서 응답보내기 (0) | 2020.07.17 |
Filter 에서 요청, 응답 값 조작하기. Wrapper 클래스 (0) | 2020.07.17 |