文章目录
一、监听器的概述
1. 监听器是什么
- 是一个实现了特定接口的Java类;
- 用来监听另一个 Java类的方法调用或者属性的改变;
- 当被监听对象发生了上述事件后,监听器某个方法将会立即被执行。
2. 监听器用途
- 用来监听其他对象的变化,主要用在图形化界面开发上。
3. 监听器的术语
- 事件源:被监听对象(汽车);
- 监听器:监听的对象(报警器);
- 事件源和监听器的绑定:(在汽车上安装报警器);
- 事件:事件源对象的改变(踹了汽车一脚)——主要功能获得事件源对象。
二、监听器的入门
三、Servlet 中的监听器
1. Servlet 中监听器简介
- 在 Servlet 中定义了多种类型的监听器,他们主要用于监听的事件源分别是:
- ServletContext
- HttpSession
- ServletRequest
2. Servlet 中监听器的分类
- 监听三个域对象的创建和销毁的监听器(三个);
- 监听三个域对象的属性变更(属性添加、移除、替换)的监听器(三个);
- 监听HttpSession中JavaBean的状态改变(钝化、活化、绑定、解除绑定)的监听器(两个);
四、监听三个域对象的创建和销毁的监听器(一)——ServletContextListener 监听器的使用
1. ServletContextListener 监听器作用
- 用来监听 ServletContext 域对象的创建和销毁的监听器;
2. ServletContext 创建和销毁
- ServletContext 创建:服务器启动的时候,为每个web应用创建单独的ServletContext 对象;
- ServletContext 销毁:服务器关闭的时候,或者项目熊web服务器移除的时候;
3. ServletContextListener 监听器的方法
- 监听 ServletContext 对象创建:
contextInitialized(ServletContextEvent sce)
; - 监听 ServletContext 对象销毁:
contextDestroyed(ServletContextEvent sce)
;
4. 编写监听器
- 监听器代码
- 配置监听器
5. ServletContextListener 企业用途
- 加载框架的配置文件:
Spring框架提供了一个核心监听器 ContextLoaderListener; - 定时任务调度;
五、监听三个域对象的创建和销毁的监听器(二)——HttpSessionListener 监听器的使用
1. HttpSessionListener 监听器作用
- 用来监听 HttpSession 对象的创建和销毁;
2. HttpSession 的创建和销毁
- 创建:
- 服务器端第一次调用 getSession() 方法时创建
- 销毁:
- Session 过期,默认过期时间为30分钟;
- 非正常关闭服务器;
- 手动调用 session.invalidate();
3. HttpSessionListener 监听器的方法
- 监听 HttpSession 对象创建:
sessionCreated(HttpSessionEvent se)
; - 监听 HttpSession 对象销毁:
sessionDestroyed(HttpSessionEvent se)
;
4. 编写监听器
- 编写监听器
- 配置监听器
5. 几个问题
六、监听三个域对象的创建和销毁的监听器(三)——ServletRequestListener 监听器的使用
1. ServletRequestListener 监听器作用
- 用来监听 ServletRequest 对象的创建和销毁;
2. ServletRequest 的创建和销毁
- 创建:从客户端向服务器发送一次请求,服务器就会创建 request 对象;
- 销毁:服务器做出了响应之后,request 对象就销毁了;
3. ServletRequestListener 监听器的方法
- 监听 ServletRequest 对象创建:
requestInitialized(ServletRequestEvent sre)
; - 监听 ServletRequest 对象销毁:
requestDestroyed(ServletRequestEvent sre)
;
4. 编写监听器
- 编写监听器
- 配置监听器
5. 几个问题
七、监听三个域对象的属性变更的监听器
1. ServletContextAttributeListener
- 监听 ServletContext 对象中的属性变更(属性添加、移除、替换)的监听器;
2. HttpSessionAttributeListener
- 监听 HttpSession 对象中的属性变更(属性添加、移除、替换)的监听器;
3. ServletRequestAttributeListener
- 监听 ServletRequest 对象中的属性变更(属性添加、移除、替换)的监听器;
八、监听HttpSession 中Java类状态改变的监听器
- 保存在 Session 域中的 Java 类可以有多种状态:
- 从 session 中解除绑定;
- 随 session 对象持久化到一个存储设备中(钝化);
- 随 session 对象从一个存储设备中恢复(活化);
- Servlet 定义了两个特殊的监听的接口,来帮助 Java 类了解自己在 session 域中的状态:
- HttpSessionBindingListener 接口;
- HttpSessionActivationListener 接口;
- 实现这两个接口的类不需要在 web.xml 中进行配置;
1. HttpSessionBindingListener
- 用来监听 Java类 在 HttpSession 中的绑定和解除绑定的监听器;
2. HttpSessionActivationListener
- 用来监听 HttpSession 中 Java类 的钝化和活化的监听器;