개발/JSP

ServletContextListener

728x90

- 웹 어플리케이션이 시작되거나 종료될 때 호출할 메서드를 정의한 인터페이스.

- public void contextInitialized(ServletContextEvent sce) : 웹어플리케이션을 초기화할 때 호출

- public void contextDestroyed(ServletContextEvent sce) : 웹 어플리케이션을 종료할 때 호출.

 

서블릿은 다양한 시점에서 발생하는 이벤트와 이벤트를 처리하기 위해 인터페이스를 정의하고 있다. 이들 이벤트와 인터페이스를 이용하면

 

데이터의 초기화, 요청처리 등을 추적할 수 있게 된다.

 

 

웹 컨테이너는 컨텍스트가 시작되거나 종료되는 시점에 특정 클래스의 메서드를 수행할 수 있는 기능 제공

 

1. javax.servlet.ServletContextListener 인터페이스를 구현한 클래스를 작성한다.

 2. web.xml 파일에 1번에서 작성한 클래스를 등록한다.

1개 이상의 <listener> 태그를 등록할 수 있으며, 각 <listener> 태그는 반드시 한 개의 <listener-class> 태그를 자식 태그로 가져야 한다. 두개의 listener를 등록할 수도 있는데 이때 실행 순서는 먼저 등록한 순서(위에서 아래로)이다.

두개 이상의 listener가 종료될 때는 아래에서 위의 순서대로 종료한다.(즉, 스택구조이다.)

 

contestInitialized() 메서드에는 throws가 정의되어 있지 않기 때문에 익셉션을 발생시키려면 RuntimeException이나 그 하위 타입의 익셉션을 발생시켜야 한다.

 

서블릿 3.0 버전부터는 web.xml에 등록하지 않아도 @WebListener 어노테이션을 리스너로 적용할 클래스(ServletContextListener 인터페이스를 구현하는)에 적용하면 자동으로 리스너로 등록된다.( 클래스에 빨간줄이 그어지면 Add 구현되지 않은 메소드 하면  Override 할 것이다.)

'개발 > JSP' 카테고리의 다른 글

서블릿이란  (0) 2021.04.19
MVC 패턴  (0) 2021.04.18
JSP 필터  (0) 2021.04.18