336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
리스너라? 어떠한 특정 이벤트가 발생하면 실행이되도록 web.xml에 추가
어떠한 특정 이벤트가 발생하면 ? 이란걸 어떻게 알까? 이미 구현되어 있는 인터페이스를 사용하자.
이미 존재한 인터페이스는 아래 정리가 되어 있음....
HttpSessionAttributeListener는 세션에 어떤 속성이 추가, 제거, 수정되는 이벤트가 발생하는지 알고 싶을 때 사용한다. 반면에 HttpSessionBindingListener는 자신이 세션에 속성으로 추가되었는지, 제거 되었는지 알기 위하여 사용한다.
HttpSessionAttributeListener 인터페이스를 구현한 클래스를 web.xml의 리스너로 등록하여 현재 로그인시 online_user를 추가하고 로그아웃시 삭제 해준다.
자신이 원하는 로직으로 구현하기 위해서는 HttpSessionAttributeListener 인터페이스를 상속하여 재정의 하여 사용하면 된다.
[출처] http://www.4te.co.kr/549
리스너는 컨테이너가 애플리케이션과 HTTP 세션에 관련된 어떤 동작을 할 때마다
개발자가 정의한 다른 코드를 실행 가능하도록 만든 장치이다.
[세션리스너]
[javax.servlet.http.HttpSessionBindingListener]
[메소드]
valueBound(event) :: 객체가 세션에 추가되고 있음을 알림
valueUnbound(event) :: 객체가 세션에서 제거되고 있음을 알림
valueBound()메소드가 자동호출되고, 그 객체가 세션에서 빠지면 valueUnbound()
메소드가 자동으로 호출된다.
[javax.servlet.http.HttpSessionActivationListener]
이 기능을 지원하는 서버는 로드 밸런싱을 적절히 수행하여, 같은 컴퓨터
다수의 컴퓨터에 떠있는 여러 개의 JVM 사이서 세션을 주고 받게 할수 있다.
[메소드]
sessionDidActivate(event) :: 세션이 액티브 상태가 되었음을 알림
sessionWillPassivate(event) :: 세션이 패시브 상태가 되었음을 알림
어떤 세션이 다른 JVM 에 옮겨질 목적으로 저장된 것을 “패시브 상태”라고 하고
세션이 다른 JVM 으로 전송된 후에는 “액티브 상태”가 된다.
위의 두 리스너는 컨테이너에 따로 등록할 필요가 없다.
만들어 놓으면 이벤트 처리가 자동으로 된다.
[javax.servlet.http.HttpSEssionListener]
세션의 생성과 소멸을 나타내는 이벤트를 알리는 기능
[메소드]
sessionCreated(event) :: 세션이 메모리에 올라오고 초기화되었음을 알림
sessionDestroyed(event) :: 세션이 메모리에서 없어졌음을 알림
[javax.servlet.http.HttpSessionAttributeListener]
세션 속성에 관련된 이벤트 처리
[메소드]
attributeAdded(HttpSessionBindingEvent event)
:: 새 세션 속성에 값이 대입되었음을 알림
attributeReplaced(HttpSessionBindingEvent event)
:: 기존재 세션 속성에 새 값이 대입되었음을 알림
attributeRemoved(HttpSessionBindingEvent event)
:: 세션 속성이 제거 되었음을 알림.
event.getName() / event.getValue() 속성과 초기값 반환
HttpSessionAttributeListener 와 HttpSessionBindingListener 는 동작상의
유사함을 가지고 있으나 가장 큰 차이점은 HttpSessionBindingListener는
세션에 추가되는 객체가 직접 구현하지만 HttpSessionAttributeListener를
구현하는 클래스는 세션에 직접 들어가지 않아도 된다는 점이다.
[애플리케이션 리스너]
[javax.servlet.ServletContext]
모든 서블릿과 JSP 페이지들이 공유한다는 점으로 오랜시간 사용해야하는
전역 리소스를 저장하는 장소
[메소드]
contextInitialized(ServletContextEvent event)
:: 애플리케이션이 로드되고 초기화됨을 알림
contextDestroy(ServletContextEvent event)
::애플리케이션이 언로드됨을 알림
[javax.servletServletContextAttributeListener]
[메소드]
attributeAdded(ServletContextAttributeEvent event)
:: 새 애플리케이션 속성에 값이 대입 되었음을 알림
attributeReplaced(event)
:: 이미 있는 애플리케이션 속성에 새 값 대입되었음을 알림