프로그래머/JAVA

[JSP] 세션 리스너

얼짱가면 2013. 3. 28. 13:49

Session Listener란?

웹 어플리케이션에 리스너가 생성되는지, 리스너가 종료되는지, 세션의 attribute에 새로운 attribute가 추가, 삭제, 갱신되는지 이러한 일들을 세션에 일어나는 상황을 알고 싶다면 세션에 리스너를 등록

 

[세션 관련 리스너와 세션 외 리스너의 종류]

리스너 인터페이스

메서드

이벤트 타입

Javax.servlet

ServletContextAttributeListener

attributeAdded

attributeRemoved

attributeReplaced

ServletContextAttributeEvent

애플리케이션 context Attribute 추가, 제거, 수정했는지 알고 싶을 사용

Javax.servlet.http

HttpSessionListener

sessionCreated

sessionDestroyed

HttpSessionEvent

현재 접속한 사용자가 있는지 알고 싶을 사용

현재 활성화된 세션 정보를 알고 싶을 사용

Javax.servlet

ServletRequestListener

requestInitialized

requestDestroyed

ServletRequestEvent

Request 들어올 때와 종료될 때를 알고 싶을 사용

Javax.servlet.http

ServletRequestAttributeListner

attributeAdded

attributeRemoved

attributeReplaced

ServletRequestAttributeEvent

Request Attribute 추가, 제거, 수정됐을 때를 알고 싶을 사용.

Mavax.servlet.http

HttpSessionBindingListener

valueBound

valueUnbound

HttpSessionBindingEvent

Attribute 객체가 세션에 일부가 되었는지 제거되었는지 알고 싶을 때 사용.

구현한 객체 자신이 세션 속성에 추가, 제거되었을 때 이 객체의 메서드가 자동 호출된다.

이 리스너는 web.xml<listener> 요소를 등록할 필요가 없다

Javax.servlet.http

HttpSessionAttributeListener

attributeAdded

attributeRemoved

attributeReplaced

HttpSessionBindingEvent

Session attribute 추가, 제거, 수정됐을 때를 알고 싶을 사용

Javax.servlet

ServletContextListener

contextInitailized

contextDestroyed

ServletContextEvent

ServletContext 생성, 소멸 됐을 때를 알고 싶을 사용.

Javax.servlet.http

HttpSessionActivationListener

session.DidActivate

sessionWillPassivate

HttpSessionEvent

Session이 다른 JVM으로 이동할 때의 과정에서 attributeinstance를 저장하고

다시 읽어 내기 위해서 사용.

readObject() 대신 sessionDidActivate()writeObject() 대신 sessionWillPassivate()를 사용

 

[Output]

3 27, 2013 5:08:58 오후 org.apache.catalina.startup.Catalina start

INFO: Server startup in 327 ms

생성된 JSESSIONID: 91859B60569C115D55F19C3B8C202DEF 방문하고 있는 클라이언트 수: 1

세션생성시간: 17 9 0

세션생성시간: Wed Mar 27 17:09:00 KST 2013

소멸되는 JSESSIONID: 91859B60569C115D55F19C3B8C202DEF 현재 클라이언트 수: 0

세션 timout : 3분

세션 생존 시간 : 1364371761950

생성된 JSESSIONID: B6ABF1C4444648E07EC94057A23ECB8F 방문하고 있는 클라이언트 수: 1

세션생성시간: 17 14 16

세션생성시간: Wed Mar 27 17:14:16 KST 2013

생성된 JSESSIONID: F7A11ABE53A6AA61E4499DEF4944CC93 방문하고 있는 클라이언트 수: 2

세션생성시간: 17 14 39

세션생성시간: Wed Mar 27 17:14:39 KST 2013

 

생성된 JSESSIONID: 22BDEE4D8F40C4DF2DC06B2B34DECF99 방문하고 있는 클라이언트 수: 1

세션생성시간: 9 6 28

세션생성시간: Thu Mar 28 09:06:28 KST 2013

attributeAdded::value-1364429188493 name-sessionStart session-22BDEE4D8F40C4DF2DC06B2B34DECF99

sessionStart

이미 로그인한 상태

소멸되는 JSESSIONID: 22BDEE4D8F40C4DF2DC06B2B34DECF99 현재 클라이언트 수: 0

세션 timout : 3분

세션 생존 시간 : 1364429229238

attributeRemoved::value-1364429188493 name-sessionStart session-22BDEE4D8F40C4DF2DC06B2B34DECF99