Listener监听器

  • 监听器创建
  1. @WebListener
  2. public class MyListener implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener {
  3. @Override
  4. public void contextInitialized(ServletContextEvent sce) {
  5. }
  6. @Override
  7. public void contextDestroyed(ServletContextEvent sce) {
  8. }
  9. @Override
  10. public void sessionCreated(HttpSessionEvent se) {
  11. }
  12. @Override
  13. public void sessionDestroyed(HttpSessionEvent se) {
  14. }
  15. @Override
  16. public void attributeAdded(HttpSessionBindingEvent sbe) {
  17. }
  18. @Override
  19. public void attributeRemoved(HttpSessionBindingEvent sbe) {
  20. }
  21. @Override
  22. public void attributeReplaced(HttpSessionBindingEvent sbe) {
  23. }
  24. }
  • 当添加了@WebListener注解后将不需要配置
<listener>
    <listener-class>cn.hzlim.MyListener</listener-class>
</listener>

监听器接口

1.ServletRequestListener

  • 当ServletRequest创建和关闭时触发 | 方法 | 说明 | | —- | —- | | void requestInitialized(ServletRequestEvent sre) | ServletRequest对象的初始化时触发 | | void requestDestroyed(ServletRequestEvent sre) | ServletRequest对象的销毁时触发 |

2.ServletRequestAttributeListener

  • 向ServletRequest添加、删除或者替换一个属性时触发 | 方法 | 说明 | | —- | —- | | void attributeAdded(ServletRequestAttributeEvent srae) | ServletRequest增加属性时触发 | | void attributeReplaced(ServletRequestAttributeEvent srae) | ServletRequest修改属性时触发 | | void attributeRemoved(ServletRequestAttributeEvent srae) | ServletRequest删除属性时触发 |

3.HttpSessionListener

  • 当HttpSession刚被创建或者失效时触发 | 方法 | 说明 | | —- | —- | | void sessionCreated(HttpSessionEvent se) | HttpSession对象被创建时触发 | | void sessionDestroyed(HttpSessionEvent se) | HttpSession超时或者调用invalidate方法销毁时触发 |

4.HttpSessionAttributeListener

  • 当HttpSession中添加、删除或者替换一个属性时触发 | 方法 | 说明 | | —- | —- | | void attributeAdded(HttpSessionBindingEventse) | 会话添加属性时触发 | | void attributeRemoved(HttpSessionBindingEvent se) | 会话删除属性时触发 | | void attributeReplaced(HttpSessionBindingEvent se) | 会话改变属性时触发 |

5.ServletContextListener

  • ServletContext创建和关闭时触发 | 方法 | 说明 | | —- | —- | | void contextInitialized(ServletContextEvent sce) | ServletContext创建时触发 | | void contextDestroyed(ServletContextEvent sce) | ServletContext销毁时触发 |

6.ServletContextAttributeListener

  • 当ServletContext添加、删除或者替换一个属性时触发 | 方法 | 说明 | | —- | —- | | void attributeAdded(ServletContextAttributeEvent scae) | ServletContext添加属性时触发 | | void attributeRemoved(ServletContextAttributeEvent scae) | ServletContext删除属性时触发 | | void attributeReplaced(ServletContextAttributeEvent scae) | ServletContext改变属性时触发 |

7.HttpSessionBindingListener

  • 当对象被添加或者解除绑定到HttpSession中时触发
public class Person implements HttpSessionBindingListener {

    private String name;
    private String age;

    @Override
    public void valueBound(HttpSessionBindingEvent event) {
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
    }
}
方法 说明
void valueBound(HttpSessionBindingEvent event) 对象绑定时触发
void valueUnbound(HttpSessionBindingEvent event) 对象解除绑定时触发

8.HttpSessionActivationListener

  • session数值从内存保存到硬盘(钝化)和从硬盘读取到内存(活化)时触发 | 方法 | 说明 | | —- | —- | | void sessionWillPassivate(HttpSessionEvent se) | 钝化操作时触发 | | void sessionDidActivate(HttpSessionEvent se) | 活化操作时触发 |
  • 修改session保存的路径,添加context.xml配置文件
<Manager className="org.apache.catalina.session.PersistentManager"
         saveOnRestart="true">
    <!-- 配置文件存放的路径信息,可以自由指定 -->
    <Store className="org.apache.catalina.session.FileStore"
           directory="/Users/session"/>
</Manager>

更新时间:{docsify-updated}