ServletContextListener 구현

JSP 2016. 3. 21. 09:30

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
Posted by netyhobby
,