ServletContextListener 구현
1) 웹 어플리케이션의 시작 이벤트나 종료 이벤트를 처리
2) 웹 컨테이너는 ServletContextListener의 특정 메서드를 호출함
3) ServletContextListener 인터페이스의 이벤트 처리 메서드
- public void contextInitialized(ServletContextEvent sce)웹 어플리케이션이 초기화될 때 호출된다.
- public void contextDestroyed(ServletContextEvent sce)웹 어플리케이션이 종료될 때 호출된다.
1. web.xml 파일에 리스너 등록
<listener> 태그 이용
<web-app ...>
<listener>
<listener-class>jdbc.loader.DBCPInitListener</listener-class>
</listener>
<listener>
<listener-class>com.model.CodeInitListener</listener-class>
</listener>
...
</web-app>
2. ServletContextEvent로부터 필요 정보 조회
1) contextInitialized()와 contextDestroyed() 메서드에 전달되는 객체
2) ServletContext를 구해주는 getServletContext() 메서드 제공
- ServletContext.getInitParameter() 메서드를 이용해서 web.xml 파일에 등록한 초기화 파라미터 값 조회
<web-app ...>
<context-param>
<param-name>jdbcdriver</param-name>
<param-value>com.model.jdbc.Driver</param-value>
</context-param>
</web-app>
public class DBCPInitListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
try {
ServletContext context = sce.getServletContext();
String drivers = context.getInitParameter("jdbcdriver");
...
}
}
3. 실행 순서 & 예외 처리
1) 한 개 이상의 리스너 등록 가능
- contextInitialized() 메서드는 등록된 순서대로 실행
- contextDestroyed() 메서드는 등록된 반대 순서대로 실행
2) 리스너의 메서드에 try - catch로 예외를 잡은 뒤, RuntimeException을 발생시키도록 함
- 리스너가 예외를 발생할 경우 웹 어플리케이션 시작에 실패함
public void contextInitialized(ServletContextEvent sce) {
try {
...
...
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
'JSP' 카테고리의 다른 글
실습:필터 (web.xml 이용) (0) | 2016.03.18 |
---|---|
필터 (0) | 2016.03.18 |
커스텀 태그 (0) | 2016.03.17 |
실습: 자바빈을 코어태그로 불러오기 (0) | 2016.03.16 |
JSTL (JSP Standard Tag Library) (0) | 2016.03.15 |