1. 什么是监听器
监听器用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用 监听器对象中的方法。常用于统计在线人数和在线用户,系统加载时进行信息初始化, 统计网站的访问量等等
监听器的相关概念:
- 事件源:被监听的对象 ----- 三个域对象 request session servletContext
- 监听器:监听事件源对象 事件源对象的状态的变化都会触发监听器
- 注册监听器:将监听器与事件源进行绑定
- 响应行为:监听器监听到事件源的状态变化时 所涉及的功能代码
事件监听机制
- 事件:一件事情
- 事件源 :事件发生的地方
- 监听器 :一个对象
- 注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码
2. 监听器类型
2.1. ServletContext的变化
2.1.1. 监听生命周期
ServletContextListener接口内部方法:
初始化:contextInitialized
销毁:contextDestroyed
2.1.2. 监听属性内容变化
ServletContextAttributeListener接口
attributeAdded:监听属性的添加
attributeRemoved:监听属性的移除
attributeReplaced:监听属性的修改
2.2. 监听HttpSession变化
2.2.1. 监听生命周期
HttpSessionListener
sessionCreated:监听Session对象的创建
sessionDestroyed:监听Session对象的销毁
2.2.2. 监听属性内
HttpSessionAttributeListener
监听HttpSession的内容的变化内部的方法:
attributeAdded:监听属性的添加
attributeRemoved:监听属性的移除
AttributeReplaced:监听属性的修改
2.2.3. 监听钝化和活化
HttpSessionActivationListener
sessionWillPassivate: 监听Session内部存储对象的钝化‐存储
sessionDidActivate: 监听Session内部存储对象的活化‐‐‐读取对应类需要实现序列化接口Serializable
2.2.4. 监听对象的添加和移除
HttpSessionBindingListener
valueBound:监听对象的绑定
valueUnbound:监听对象的解除绑定
2.2.5. HttpSession的id的变化
这是Servlet3.1新增的
HttpSessionIdListener
sessionIdChanged:监听HttpSession的id的变化
2.3. 监听ServletRequest的变化
2.3.1. 监听生命周期
ServletRequestListener
1、requestInitialized:监听request对象的初始化
2、requestDestroyed:监听request对象的销毁
2.3.2. 监听属性内容变化
ServletRequestAttributeListener
attributeAdded:监听属性的添加
attributeRemoved:监听属性的移除
attributeReplaced:监听属性的修改
2.3.3. 监听异步请求
Servelt3.1新增监听器
AsyncListener
1、onStartAsync:监听异步开始
2、onTimeout:监听超时
3、onError:监听异步的错误信息
4、onComplete:监听异步的完成
3. 配置
3.1. xml的配置
<listener>
<listener‐class>com.qf.web.listener.RequestLeftListener</listener‐ class>
</listener>
3.2. 注解式配置
Servlet3.0之后新增的,使用注解@WebListener进行监听器的注册