作用域对象的创建和销毁我们不参与,但是三个作用域对象的创建时机和销毁时机 我们需要知道,因为需要连带触发我们自己的一些逻辑的执行。给三个作用域对象增加 监听机制,监听他们的销毁创建,初始化,以及缓存数据的变更等 特点: ① 监听器是实现了指定接口Java类 ② 在web.xml中或者使用注解告诉TOMCAT监听器生效。 ③ 监听器的逻辑代码由TOMCAT触发,由程序员编写。 使用: 创建Java类, 实现监听器的指定接口 ② 配置监听器生效 注解: @WebListener,在监听器类上使用
我把这里边的都写到了,咱们一般都用HttpSessionListener和HttpSessionAttributeListener的比较多
@WebListener public class MyListener implements ServletRequestListener, ServletRequestAttributeListener, ServletContextListener,ServletContextAttributeListener , HttpSessionListener, HttpSessionAttributeListener { /**********************HttpSessionAttributeListener:监听session对象数据的变更*****************/ @Override public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) { } @Override public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {} @Override public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {} /**********************HttpSessionListener:监听session对象的创建和销毁*****************/ @Override public void sessionCreated(HttpSessionEvent httpSessionEvent) {} @Override public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {} /**********************ServletContextAttributeListener:监听application对象的缓存数据的变更*****************/ @Override public void attributeAdded(ServletContextAttributeEvent servletContextAttributeEvent) {} @Override public void attributeRemoved(ServletContextAttributeEvent servletContextAttributeEvent) { } @Override public void attributeReplaced(ServletContextAttributeEvent servletContextAttributeEvent) {} /**********************ServletContextListener:监听application对象的创建和销毁*****************/ @Override public void contextInitialized(ServletContextEvent servletContextEvent) {} @Override public void contextDestroyed(ServletContextEvent servletContextEvent) {} /**********************ServletRequestAttributeListener:监听request对象的缓存数据的变更*****************/ @Override public void attributeAdded(ServletRequestAttributeEvent servletRequestAttributeEvent) { System.out.println("request对象中新增了一个缓存数据"); } @Override public void attributeRemoved(ServletRequestAttributeEvent servletRequestAttributeEvent) {} @Override public void attributeReplaced(ServletRequestAttributeEvent servletRequestAttributeEvent) {} /**********************ServletRequestListener:监听request对象的创建和销毁*****************/ @Override public void requestDestroyed(ServletRequestEvent servletRequestEvent) { //获取触发此次监听创建的request对象 ServletRequest servletRequest = servletRequestEvent.getServletRequest(); System.out.println("request对象被销毁了"); } @Override public void requestInitialized(ServletRequestEvent servletRequestEvent) { System.out.println("request对象被创建了"); } }