티스토리 뷰

Java/servlet

Servlet Listener Interface

LichKing 2015. 10. 21. 17:09

1.ServletContextListener

-애플리케이션이 배포, 종료되는 순간 이벤트 발생

Spring을 사용하다보면 web.xml에

 

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

 

라고 작성된걸 많이들 봤을것이다.

저기에 명시된 ContextLoaderListener가 ServletContextListener를 확장한(구현한) 클래스이며 애플리케이션이 배포되는 순간 Spring Bean들을 생성하는것이다.

 

2. ServletContextAttributeListener

-서블릿 컨텍스트에 속성을 추가, 수정, 삭제하는 순간 이벤트 발생

 

3. HttpSessionListener

-세션이 생성, 소멸하는 순간 이벤트 발생

 

4. ServletRequestListener

-Request 객체가 생성, 소멸하는 순간 이벤트 발생

Request 객체는 요청이 들어오면 WAS에서 생성한다. 즉 요청이 들어오고 응답이 나갈때 이벤트를 발생시킨다는 것이다.

 

5. ServletRequestAttributeListener

-Request 객체에 속성을 추가, 수정, 삭제하는 순간 이벤트 발생

 

6. HttpSessionBindingListener

-일반적인 불특정 자바 객체가 Session에 속성으로 추가, 삭제되는 순간 이벤트 발생

보통 Session에 기본적인 유저정보를 담아놓는다. 해당 인터페이스는 '세션'에다가 구현하는게 아니고 '구현된 클래스'가 세션에 추가, 삭제될때 발생한다. 헷갈리지 말자.

 

7. HttpSessionAttributeListener

-세션에 속성을 추가, 삭제하는 순간 이벤트 발생

내가 이 포스팅을 하기로 결심한 이벤트다. 이것저것 비슷한 명칭도 많고 헷갈리는 부분들이 많아서 그냥 외우기는 힘들더라.....

 

8. HttpSessionActivationListener

-세션에 속성으로 추가된 일반적인 불특정 자바객체가 다른 JVM으로 옮겨갈때, 옮겨올때 이벤트 발생

설명하기가 좀 어려운데 WAS를 2대 이상 구동하는경우 요청할때마다 어떤 WAS로 응답이 갈지는 아무도 모른다. 하지만 세션은 WAS에 존재하는 것이므로 A WAS에서 세션이 생성됐을때 두번째 요청이 B로 전달될경우 B에선 세션이 없다. 이럴경우 치명적인 문제가 발생할 수 있는데 이럴땐 대비해 세션을 A에서 B로 이동시킬수가있다. 이 이벤트는 이런경우 사용하는것인데 내가 직접 프로젝트를 경험한 바로는 세션을 생성한 WAS로만 요청이 전달되게끔 라우터 설정을 하는듯 싶다.

'Java > servlet' 카테고리의 다른 글

서블릿 보안  (0) 2015.11.05
Servlet Listener Interface  (0) 2015.10.21
서블릿  (0) 2015.10.14
댓글
댓글쓰기 폼