서블릿은 다양한 시점에서 발생하는 이벤트와 이벤트를 처리하기 위한 인터페이스를 정의하고 있다.
웹 어플리케이션에서 필요로 하는 데이터의 초기화나 요청 처리등을 추적할 수 있게 된다.
서블릿 규약은 다양한 이벤트를 처리할 수 있는 인터페이스를 정의하고 있는데 이번시간에는 ServletContextListener 인터페이스 활용법을 배우게 되었다.
Listener란? 이벤트를 처리
* ServletContextListener 인터페이스는 서블릿이 발생시키는 이벤트를 처리하거나 요청 추적을 할 수 있는 인터페이스이다.
1. ServletContextListenr를 이용한 이벤트 처리
웹 컨테이너는 웹 어플리케이션이 시작되거나 종료되는 시점에 특정 클래스의 메서드를 실행할 수 있는 기능을 제공하고 있다. 이 기능을 사용하면 웹 어플리케이션을 실행할 때 필요한 초기화 작업이나 웹 어플리케이션이 종료된 후 사용된 자원을 반환하는 등의 작업 수행할 수 있다.
- 웹 컨테이너(==톰캣==WAS)가 시작/종료할 때 발생하는 이벤트를 처리하려고 한다면 ServletContextLister를 구현한 클래스에서 처리를 하면 된다.
- 방법
ㄱ. ServletContextLister 인터페이스를 구현한 클래스 작성
1) contextInitialzied() 메서드 : 웹 컨테이너(==톰캣==WAS)가 시작할 때 일어나는 이벤트(웹 애플리케이션이 시작( 초기화 ) )
2) contextDestroyed() 메서드 : 웹 컨테이너(==톰캣==WAS)가 종료할 때 일어나는 이벤트(웹 애플리케이션이 종료)
ㄴ. 위의 클래스를 web.xml 에 등록
- <listener> 태그 안에 <listener-class> 태그에 완전한 클래스 이름을 명시
- 1개 이상의 <listener> 태그를 등록할 수 있으며, 각 <listener> 태그는 반드시 한 개의 <listener-class> 태그를 자식태그로 가져야 한다.
ㄷ. web.xml에서 리스너 관련 컨텍스트 파라미터를 등록 + 클래스에서 초기화 파라미터 값가져오기
- <context-param> 태그 안에 <param-name>으로 이름을 설정하고 <param-value> 태그로 컨텍스트 초기화 파라미터 값을 지정
* web.xml에서 설정한 초기화 파라미터 값을 구하는데 사용되는 ServletContext의 메서드 2가지
getServletContext() 메서드가 리턴하는 ServletContext 객체는 JSP의 application 기본 객체와 동일한 객체로 ServletContext 객체를 이용하면 web.xml 파일에 설정된 컨텍스트 초기화 파라미터를 구할수 있다.
(1) getInitParameter(String name) : 지정한 이름을 갖는 컨텍스트 초기화 파라미터 값을 리턴. 존재하지 않을 경우 null을 리턴. web.xml에서 <context-param> 태그에 <param-name> 태그로 지정한 이름을 입력
(2) Enumeration<String> getInitParameterNames() : 컨텍스트 초기화 파리미터의 이름 목록을 열거자 타입으로 리턴
2. 예제
- ServletContextListener 인터페이스를 구현한 클래스 : DBCPinitListener 클래스
1) com.listener.DBCPinitListener.java 생성 후 메서드 오버라이딩
2) web.xml에서 리스너 등록
3) web.xml에서 리스너 관련 컨텍스트 파라미터 등록
4) DBCPinitListener 클래스 안 메서드 구현
[결과]
'TIL > View Template' 카테고리의 다른 글
[SIST] JSP_days11_파일업로드 (0) | 2022.06.28 |
---|---|
[SIST] days10_MVC 패턴 답변형(계층형) 게시판 만들기 (0) | 2022.06.28 |
[SIST] JSP_days09_필터(Filter) (0) | 2022.06.27 |
[SIST] JSP_days05/06_게시판 만들기 (0) | 2022.06.27 |
[SIST] JSP_days08/09_모델 2구조의 MVC 패턴 게시판 구현 (0) | 2022.06.24 |