WEB开发——监听器(域对象的创建和销毁监听器、域对象中属性变更监听器、感知Session绑定事件监听器)

本文详细介绍了Servlet监听器的概念及其在Web应用中的作用。包括监听器的分类、如何编写及配置监听器等内容,并针对不同的监听场景提供了具体的接口说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

监听器:
专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动
------------------------------------------------------------------------------------------------------------------
Servlet监听器:(Servlet规范中定义的一种特殊类)
用于监听web应用程序中的ServletContext, HttpSession和ServletRequest等域对象的创建、销毁事件,以及域对象中的属性发生修改事件
按监听事件类型分为:
●  域对象自身的创建和销毁事件监听器
●  域对象中属性的增加和删除事件监听器
●  绑定到HttpSession域中某个对象的状态事件监听器
------------------------------------------------------------------------------------------------------------------
编写Servlet监听器:
●  Servlet规范为每种事件监听器都定义了相应的接口,开发人员编写的事件监听器程序只需实现这些接口,web 服务器根据用户编写的事件监听器所实现的接口把它注册到相应的被监听对象上
●  一些 Servlet 事件监听器需要在 web 应用程序的 web.xml 文件中进行注册,一个 web.xml 文件中可以注册多个 Servlet 事件监听器,web 服务器按照它们在 web.xml 文件中的注册顺序来加载和注册这些 Serlvet 事件监听器。
●  Serlvet 事件监听器的注册和调用过程都是由 web 容器自动完成的,当发生被监听的对象被创建,修改或销毁事件时,web容器将调用与之相关的 Servlet 事件监听器对象的相关方法,开发人员在在这些方法中编写的事件处理代码即被执行
●  由于一个 web 应用程序只会为每个事件监听器创建一个对象,有可能出现多个线程同时调用同一个事件监听器对象的情况,所以,在编写事件监听器类时,应考虑多线程安全的问题
●  在web.xml中配置监听地址:(注解:@WebListener)

------------------------------------------------------------------------------------------------------------------
监听域对象的创建和销毁:
●  就是用来监听ServletContext, HttpSession, HttpServletRequest 这三个对象的创建和销毁事件
域对象的创建和销毁时机:

------------------------------------------------------------------------------------------------------------------
ServletContextListener接口:用于监听ServletContext对象的创建和销毁事件

------------------------------------------------------------------------------------------------------------------
HttpSessionListener接口:用于监听HttpSession对象的创建和销毁

------------------------------------------------------------------------------------------------------------------
ServletRequestListener接口:用于监听ServletRequest对象的创建和销毁

------------------------------------------------------------------------------------------------------------------
域对象中属性变更的事件监听器:
●  ServletContextAttributeListener接口:用于监听ServletContext对象中属性的变更
●  HttpSessionAttributeListener接口:用于监听HttpSession对象中属性的变更
●  ServletRequestAttributeListener接口:用于监听ServletRequest对象中属性的变更

注意:这三个接口中都定义了三个方法来处理被监听对象中属性的增加,删除和替换事件,方法名称完全相同,只是接受的参数类型不同 
------------------------------------------------------------------------------------------------------------------
感知Session绑定事件监听器:
保存在Session域中的对象多种状态:
●  绑定到Session中
●  从Session域中解除绑定
●  随Session对象持久化到一个存储设备中

●  随Session对象从一个存储设备中恢复
Servlet规范中定义了两个特殊的监听器接口来帮助JavaBean对象了解自己在Session域中的这些状态:

●  HttpSessionBindingListener接口

●  HttpSessionActivationListener接口

注意:实现这两个接口的类不需要web.xml 文件中进行注册
------------------------------------------------------------------------------------------------------------------
HttpSessionBindingListener接口:感知自己被绑定到Session中和从Session中删除事件

------------------------------------------------------------------------------------------------------------------
HttpSessionActivationListener接口:感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)事件

------------------------------------------------------------------------------------------------------------------
自己整理,有些地方是扒拉的,如有侵犯,还望告知
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值