【Java.Web】Session —— Session Listener监听器

来源:互联网 发布:如何选购电视 知乎 编辑:程序博客网 时间:2024/04/28 12:18

Session Listener

Session监听器接口

在Servlet API中定义了4个用户监听Session中的各种事件的监听器接口:

javax.servlet.httppublic interface HttpSessionListenerextends EventListener

  • HttpSessionListener接口 —— 监听创建Session及销毁Session的事件,有如下两个方法:
    • sessionCreated(HttpSessionEvent event) —— 当Servlet容器创建了一个Session后,会调用此方法
    • sessionDestroyed(HttpSessionEvent event) —— 当Servlet容器将要销毁一个Session之前,会调用此方法

javax.servlet.httppublic interface HttpSessionIdListenerextends EventListener


javax.servlet.httppublic interface HttpSessionAttributeListenerextends EventListener


  • HttpSessionAttributeListener接口 —— 监听向Session中加入属性,替换属性和删除属性的事件;有如下3个方法:
    • attributeReplaced(HttpSessionBindingEvent event) —— 当Web应用替换了Session中一个已经存在的属性的值时,Servlet容器会调用此方法
    • attributeAdded(HttpSessionBindingEvent event) —— 当Web应用向一个Session中加入了一个新的属性时,Servlet容器会调用此方法
    • attributeRemoved(HttpSessionBindingEvent event) —— 当Web应用从一个Session中删除了一个属性时,Servlet容器会调用此方法

javax.servlet.httppublic interface HttpSessionBindingListenerextends EventListener


  • HttpSessionBindingListener接口 —— 监听Session与一个属性绑定或结束绑定的事件,有如下两个方法:
    • valueUnbound(HttpSessionBindingEvent event) —— 当Web应用将要把一个属性与Session接触绑定之前,Servlet容器会调用此方法
    • valueBound(HttpSessionBindingEvent event) —— 当Web应用把一个属性与Session绑定后,Servlet容器会调用此方法

javax.servlet.httppublic interface HttpSessionActivationListenerextends EventListener


  • HttpSessionActivationListener接口 —— 监听Session被激活和被搁置的事件,有如下两个方法:
    • sessionDidActivate(HttpSessionEvent event) —— 当Servlet容器把一个Session激活后,会调用此方法
    • sessionWillPassivate(HttpSessionEvent event) —— 当Servlet容器将要把一个Session搁置之前,会调用此方法


Session监听器的注册

  • 对于HttpSessionListener和HttpSessionAttributeListener,它们必须在web.xml文件中通过<listener>元素向Servlet容器注册;
  • 对于HttpSessionBindingListener和HttpSessionActivationListener接口,它们由Session的属性类来实现;
  • 例如:假设MyData类的对象作为Session的属性与Session绑定,如果希望监听MyData对象与Session绑定,接触绑定以及Session被激活或搁置的事件,那么可以让MyData类实现HttpSessionBindingListener和HttpSessionActivationListener接口;


Session监听器使用示例






0 0