1.在Servlet API中定义了4个用于监听会话中的各种事件的监听器接口,分别是HttpSessionListener、HttpSessionAttributeListener、HttpSessionBindingListener和HttpSessionActivationListener。
2.HttpSessionListener接口可以监听创建会话的事件,它有如下2个方法:
(1)sessionCreated(HttpSessionEvent event),当Servlet容器创建一个会话,会调用此方法。
(2)sessionDestroyed(HttpSessionEvent event),当Servlet容器将要销毁一个会话之前,会调用此方法。
3.HttpSessionAttributeListener接口可以监听向会话中加入属性、替换属性和删除属性等事件:
(1)attributeAdded(HttpSessionBindingEvent event),当Web应用向一个会话中加入一个新属性时,容器会调用此方法。
(2)attributeRemoved(HttpSessionBindingEvent event),当Web应用从会话中删除一个属性时,容器会调用此方法。
(3)attributeReplaced(HttpSessionBindingEvent event),当Web应用替换了会话中一个已经存在的属性时,容器会调用此方法。
4.HttpSessionBindingListener接口可以监听会话与一个属性绑定或解除绑定的事件,它有如下两个方法:
(1)valueBound(HttpSessionBindingEvent event),当Web应用把一个属性与会话绑定后,容器会调用此方法。
(2)valueUnbound(HttpSessionBindingEvent event),当Web应用将要把一个属性与会话解除绑定之前,容器会调用此方法。
5.HttpSessionActivationListener接口可以监听会话被激活和被搁置事件,它有2个方法:
(1)sessionDidActivate(HttpSessionEvent event),当Servlet容器把一个会话激活后,容器会调用此方法。
(2)sessionWillPassivate(HttpSessionEvent event),当Servlet容器将要把一个会话搁置之前,会调用此方法。
6.对于HttpSessionListener和HttpSessionAttributeListener,它们必须在web.xml文件中通过<listener>元素向Servlet容器注册,对于HttpSessionBindingListener和HttpSessionActivationListener,它们由会话的属性来实现,即实现这两个接口即可。