在讲解我们web应用的监听器之前,我们可以先来了解一下在现实生活中监听流程是怎么样的。 现实生活中,监听器是指专门用来对其他对象身上发生的事件或者状态改变进行监听和相应处理的对象,当被监视的对象发生变化的时候,立即采取相应的行动
那么在我们的应用中,监听器是什么呢?
监听器是Servlet规范中定义的一种特殊类
- 用来监听ServletContext、HttpSession和ServletRequest等域对象的创建和销毁事件
- 用来监听域对象的属性发生修改的事件
- 可以在事件发生前、发生后做一些必要的处理
正式学习之前,我们先来看一下监听器有什么样的用途
- 统计在线人数和用户
- 系统启动的时候加载初始化信息
- 统计网站的访问量
- 和Spring相结合
我们知道在电视中,我们经常看到那些谍战片里面,有间谍会进行潜伏,然后放窃听器来进行监听,比如监听别人的电话等等。他们想要监听,肯定要先有监听的目标也就是被监听的对象,在web应用中就是request,session,servletContext等域对象,也被称为事件源。既然想要监听,肯定要借助一些工具来监听,不然怎么能进行监听,所以要有监听器,当我们监听的对象状态发生变化我们都可以监听到。但是如果他没有做事情,我们肯定也就监听不到任何的东西,在web应用中,方法调用,属性改变,状态改变等称为事件
接下来,我们就来正式的来学习监听器了。 Servlet规范中定义了9个监听器接口,可以用来监听ServletContext、HttpSession 和 ServletRequest 对象的生命周期和属性变化事件。
这些监听器接口都以listener结尾 监听器Listener按照监听的事件可以分成3大类
- 1.监听对象创建和销毁的监听器
- 2.监听对象中属性变更的监听器
- 3.监听 HttpSession 中的对象状态改变的监听器
监听对象创建和销毁的监听器
监听对象中属性变更的监听器
监听HttpSession中的对象状态改变的监听器
Session 中的对象可以有多种状态:绑定到 Session 中、从 Session 中解除绑定、随 Session 对象持久化到存储设备中(钝化)、随 Session 对象从存储设备中恢复(活化)。
Servlet 规范中定义了两个特殊的监听器接口,用来帮助对象了解自己在 Session 中的状态:HttpSessionBindingListener 接口和 HttpSessionActivationListener 接口 ,实现这两个接口的类不需要进行注册。
注意:如果监听器是HttpSessionBindingLinstener,只有实现了这个监听器接口的对象存储到Session域的时候,才会触发绑定事件,但是一个类即使没有实现HttpSessionAttributeListener,那么当这个类的对象存储到Session域的时候,也是会触发事件
步骤:
- 1.创建一个实现监听器接口的类
- 2.进行注册
- 可以使用web.xml进行注册
- 也可以用@WebListener注解来进行注册
- 注意:所有监听器的方法不需要我们去调用,服务器会进行调用。当某一个特殊事件发生的时候,服务器会自动调用
https://blog.csdn.net/qq_40241957/article/details/97906977?spm=1001.2014.3001.5506