2016년 9월 8일 목요일

36day / WEB / ServletContextListener

http://java.scwcd.jobs4times.com

  • ServletContextListener
웹어플리케이션 시작시점과 종료시점에 특정 작업을 수행할 수 있도록한다

구현방법
  1. ServletContextListener를 implements 한다
  2. Abstract method 인 contextInitialized() 와 contextDestroyed()를 구현
  3. DD(web.xml)에 listener를 등록


구현
웹 컨테이너는
  1. 해당 웹어플리케이션이 시작될 때 contextInitialized() 메서드를 호출
  2. 웹어플리케이션 종료직전 contextDestroyed() 메서드를 호출한다

예제)
  
* DD (web.xml)
  <listener>
    <listener-class>listener.DriverLoader</listener-class>
  </listener>
  <context-param>
    <param-name>driver</param-name>
    <param-value>oracle.jdbc.driver.OracleDriver</param-value>
  </context-param>
  <context-param>
    <param-name>url</param-name>
    <param-value>jdbc:oracle:thin:@127.0.0.1:1521:xe</param-value>
  </context-param>
  <context-param>
    <param-name>user</param-name>
    <param-value>scott</param-value>
  </context-param>
  <context-param>
    <param-name>pass</param-name>
    <param-value>tiger</param-value>
  </context-param>

* JDBC Driver를 Loader하는 클래스
public class DriverLoader implements ServletContextListener {
    public DriverLoader() {
    }
    public void contextDestroyed(ServletContextEvent arg0) {
    }
    public static String url;
    public static String user;
    public static String pass;
    public void contextInitialized(ServletContextEvent sce) {
        String driver = sce.getServletContext().getInitParameter("driver");
        url = sce.getServletContext().getInitParameter("url");
        user = sce.getServletContext().getInitParameter("user");
        pass = sce.getServletContext().getInitParameter("pass");
        try {
            Class.forName(driver);
            System.out.println("contextInitialized oracle driver loading");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
cs

기존에 JDBC연결시 JDBC에 연결하던 부분을 이렇게
XML에 미리 등록후 나름 간편하게 사용할 수 있다.
이 밖에도 더 다양한 활요을 할 수 있을 것 같다.


0 개의 댓글:

댓글 쓰기