servlet监听器
在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为:ServletContext,HttpSession 和 ServletRequest 这三个域对象。Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型: 监听三个域对象创建和销毁的事件监听器;监听域对象中属性的增加和删除的事件监听器;监听绑定到 HttpSession 域中的某个对象的状态的事件监听器。
Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。目前Servlet3.0和JSP2.0总共有8个监听器接口和6个Event类,对应关系如下表:
Listener接口 | Event类 |
ServletContextListener | ServletContextEvent |
ServletContextAttributeListener | ServletContextAttributeEvent |
HttpSessionListener | HttpSessionEvent |
HttpSessionActivationListener | |
HttpSessionAttributeListener | HttpSessionBindingEvent |
HttpSessionBindingListener | |
ServletRequestListener | ServletRequestEvent |
ServletRequestAttributeEvent |
下面分别介绍这些监听器和监听事件:
ServletContextListener是ServletContext的监听器,它能够监听ServletContext对象的生命周期,也就是监听Web的生命周期,当Servlet容器启动或者终止Web应用时,会触发ServletContextEvent事件,该事件由ServletContextListener来处理。在ServletContextListener接口中定义了处理ServletContextEvent事件的两个方法:contextDestroyed(ServletContextEvent sce);
contextInitialized(ServletContextEvent sce);
当Servlet容器启动Web应用时调用方法contextInitialized(ServletContextEvent sce),在调用完该方法后,容器再对Filter进行初始化,并且对那些在Web应用启动时就需要初始化的Servlet进行初始化。当Servlet容器终止Web应用时调用方法contextDestroyed(ServletContextEvent sce),在调用该方法之前,容器会先销毁所有的Servlet和Filter过滤器。
2、ServletContextAttributeListener:
ServletContextAttributeListener用于监听ServletContext(application)范围内属性的变化,实现该接口的监听器需要实现如下三个方法。
attributeAdded(ServletContextAttributeEventevent):当程序把一个属性存入application范围时触发该方法。
attributeRemoved(ServletContextAttributeEventevent):当程序把一个属性从application范围删除时触发该方法。
attributeReplaced(ServletContextAttributeEventevent):当程序替换application范围内的属性时将触发该方法。
Session创建事件发生在每次一个新的session创建的时候,类似地Session失效事件发生在每次一个Session失效的时候。sessionCreated(HttpSessionEvent se) 新建一个会话时候触发也可以说是客户端第一次和服务器交互时候触发;sessionDestroyed(HttpSessionEvent se) 销毁会话的时候 一般来说只有某个按钮触发进行销毁 或者配置定时销毁。
4、HttpSessionActivationListener:
5、HttpSessionAttributeListener:
6、HttpSessionBindingListener:
7、ServletRequestListener:
8、ServletRequestAttributeListener: