애플리케이션 라이프사이클 리스너 및 이벤트
이제 서블릿 API의 일부인 애플리케이션 라이프사이클 리스너 및 이벤트를 사용하여, 서블릿 컨텍스트와 세션이 변경되면 원하는 리스너에 알릴 수 있습니다. 예를 들어, 속성이 변경된 경우 및 세션이나 서블릿 컨텍스트가 작성되거나 영구 삭제된 경우 사용자에게 알릴 수 있습니다.
라이프사이클 리스너는 애플리케이션 개발자에게 ServletContext 및 HttpSession 오브젝트와의 상호작용에 대한 추가 제어를 제공합니다. 서블릿 컨텍스트 리스너는 애플리케이션 레벨에서 자원을 관리합니다. 세션 리스너는 단일 클라이언트에서 일련의 요청과 연관된 자원을 관리합니다. 리스너는 라이프사이클 이벤트 및 속성 수정 이벤트에 사용 가능합니다. 리스너 개발자는 원하는 리스너 기능에 따라 javax 리스너 인터페이스를 구현하는 클래스를 작성합니다.
애플리케이션 시작 시, 컨테이너는 자체 검사를 사용하여 사용자 리스너 클래스의 인스턴스를 작성하고 해당 이벤트 생성기로 등록합니다.
서블릿 컨텍스트가 작성될 때 사용자 리스너 클래스의 contextInitialized 메소드가 호출되면, 사용자 애플리케이션에 서블릿용 데이터베이스 연결을 작성하여 이 컨텍스트가 사용자 애플리케이션에 대한 경우 사용합니다. 모든 서블릿 컨텍스트 리스너는 웹 애플리케이션의 서블릿이 초기화되기 전에 컨텍스트 초기화를 알립니다.
서블릿 컨텍스트가 영구 삭제되면, contextDestroyed 메소드가 호출되며, 이 컨텍스트가 사용자 애플리케이션에 대한 경우 데이터베이스 연결을 릴리스합니다. 서블릿 컨텍스트 리스너가 컨텍스트 제거를 알리기 전에 모든 서블릿을 영구 삭제합니다.
세션 리스너에 대한 알림은 컨텍스트 리스너에 대한 알림보다 선행합니다.
서블릿 컨텍스트 및 세션 변경을 위한 리스너 클래스
- void contextInitialized(ServletContextEvent)
웹 애플리케이션이 요청을 처리하기 위해 준비되었다는 알림입니다. 이 메소드에 코드를 배치하여 작성된 컨텍스트가 사용자 웹 애플리케이션에 대한 것인지를 확인하고, 그런 경우 데이터베이스 연결을 할당하고 연결을 서블릿 컨텍스트에 저장합니다.
- void contextDestroyed(ServletContextEvent)
서블릿 컨텍스트가 종료될 것이라는 알림입니다. 이 메소드에 코드를 배치하여 작성된 컨텍스트가 사용자 웹 애플리케이션에 대한 것인지를 확인하고, 그런 경우 서블릿 컨텍스트에 저장된 데이터베이스 연결을 닫습니다.
- public void requestInitialized(ServletRequestEvent re)
- 요청이 곧 범위로 들어간다는 알림입니다.
요청을 처리하는 필터 체인에서 첫 번째 필터를 입력하려는 경우 범위로 들어가는 것으로 정의됩니다.
- 요청이 곧 범위로 들어간다는 알림입니다.
- public void requestDestroyed(ServletRequestEvent re)
- 요청이 곧 범위 밖으로 나간다는 알림입니다.
필터 체인에 마지막 필터가 존재하면 요청은 범위 밖으로 나가는 것으로 정의됩니다.
- 요청이 곧 범위 밖으로 나간다는 알림입니다.
다음 리스너 인터페이스는 javax.servlet 패키지의 일부로 정의됩니다.
- ServletContextListener
- ServletContextAttributeListener
다음 필터 인터페이스는 javax.servlet 패키지의 일부로 정의됩니다.
- FilterChain 인터페이스 - 메소드: doFilter()
다음 이벤트 클래스는 javax.servlet 패키지의 일부로 정의됩니다.
- ServletContextEvent
- ServletContextAttributeEvent
다음 인터페이스는 javax.servlet.http 패키지의 일부로 정의됩니다.
- HttpSessionListener
- HttpSessionAttributeListener
- HttpSessionActivationListener
다음 이벤트 클래스는 javax.servlet.http 패키지의 일부로 정의됩니다.
- HttpSessionEvent
예: com.ibm.websphere.DBConnectionListener.java로 서블릿 컨텍스트 리스너 작성
다음 예는 서블릿 컨텍스트 리스너를 작성하는 방법을 보여줍니다.
package com.ibm.websphere; import java.io.*; import javax.servlet.*; public class DBConnectionListener implements ServletContextListener { // implement the required context init method void contextInitialized(ServletContextEvent sce) { } // implement the required context destroy method void contextDestroyed(ServletContextEvent sce) { } }