监听器是JavaWeb三大组件之一,用于监听web应用程序中三大域对象的创建、销毁事件以及监听这些域对象中的属性发生修改的事件
Listener
Listener监听器是JavaWeb三大组件之一,用于监听web应用程序中的ServletContext、HttpSession和 ServletRequest这三大域对象的创建、销毁事件以及监听这些域对象中的属性发生修改的事件,可以实现在线用户人数统计、加载配置文件等。1
监听器
- 事件源:即谁产生的事件
- 事件对象:即产生了什么事件
- 监听器:监听事件源的动作
域对象生命周期监听器
监听域对象的创建或销毁,实现ServletRequestListener 、HttpSessionListener或ServletContextListener接口,xxxInitialized和xxxDestroyed方法有default实现,按需重写,方法参数为XxxEvent,可以从中获取ServletContext、HttpSession和 ServletRequest对象2。
域对象属性变化监听器
监听域对象属性的添加、修改、移除,实现ServletRequestAttributeListener、HttpSessionAttributeListener或ServletContextAttributeListener接口,attributeAdded、attributeRemoved和attributeReplaced方法有default实现,按需重写,方法参数为XxxAttributeEvent,可以从中获取ServletContext、HttpSession和 ServletRequest对象,同时还能通过getName()和getValue()方法分别获取被添加、修改、移除的属性和值2。
Interface HttpSessionAttributeListener 监听session对象属性变化: 添加、移除、修改
Interface ServletContextAttributeListener
感知Session绑定监听器
实现HttpSessionBindingListener接口监听对象绑定、移除到Session,valueBound和valueUnbound方法有default实现,按需重写2。
实现HttpSessionActivationListener接口监听对象钝化(序列化)和活化(反序列化)到Session,sessionWillPassivate和sessionDidActivate方法有default实现,按需重写。同时,该实体类还需要实现Serializable接口,并在META-INF目录下配置context.xml文件,设置失效时间和session序列化的保存路径:3
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="d:/session"/>
</Manager>
</Context>
Listener配置
-
web.xml配置
<!--监听request对象创建--> <listener> <listener-class>com.ldy.listener.ServletRequestListenerDemo</listener-class> </listener>
-
注解配置,使用
@WebListener
注解
除了感知session绑定监听器,其他监听器都需要配置。