Servlet监听器详解

Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。
接口:
目前Servlet2.4和JSP2.0总共有8个监听器接口和6个Event类,其中HttpSessionAttributeListener与
HttpSessionBindingListener皆使用HttpSessionBindingEvent;HttpSessionListener和HttpSessionActivationListener则都使用HttpSessionEvent;其余Listener对应的Event如下所示:

 

 

Listener接口

Event类

ServletContextListener

ServletContextEvent

ServletContextAttributeListener

ServletContextAttributeEvent

HttpSessionListener

HttpSessionEvent

HttpSessionActivationListener

HttpSessionAttributeListener

HttpSessionBindingEvent

HttpSessionBindingListener

ServletRequestListener

ServletRequestEvent

ServletRequestAttributeListener

ServletRequestAttributeEvent

 

 


一 ServletContext相关监听接口

 补充知识:通过ServletContext 的实例可以存取应用程序的全局对象以及初始化阶段的变量。
 在JSP文件中,application 是 ServletContext 的实例,由JSP容器默认创建。Servlet 中调用 getServletContext()方法得到 ServletContext 的实例。
 
 注意:全局对象即Application范围对象,初始化阶段的变量指在web.xml中,经由<context-param>元素所设定的变量,它的范围也是Application范围,例如:

 <context-param> 
  <param-name>Name</param-name> 
  <param-value>browser</param-value>
 </context-param>
 
 当容器启动时,会建立一个Application范围的对象,若要在JSP网页中取得此变量时:
  String name = (String)application.getInitParameter("Name");
 或者使用EL时:
  ${initPara.name}
 若是在Servlet中,取得Name的值方法:
  String name = (String)ServletContext.getInitParameter("Name");

 1.ServletContextListener:
 用于监听WEB 应用启动和销毁的事件,监听器类需要实现javax.servlet.ServletContextListener 接口。
 ServletContextListener 是 ServletContext 的监听者,如果 ServletContext 发生变化,如服务器启动时 ServletContext 被创建,服务器关闭时 ServletContext 将要被销毁。

 ServletContextListener接口的方法:
  void contextInitialized(ServletContextEvent sce)  
 通知正在接受的对象,应用程序已经被加载及初始化。
  void contextDestroyed(ServletContextEvent sce)  
 通知正在接受的对象,应用程序已经被载出。
 ServletContextEvent中的方法:
 ServletContext getServletContext() 
 取得ServletContext对象

 2.ServletContextAttributeListener:用于监听WEB应用属性改变的事件,包括:增加属性、删除属性、修改属性,监听器类需要实现javax.servlet.ServletContextAttributeListener接口。

 ServletContextAttributeListener接口方法:
 void attributeAdded(ServletContextAttributeEvent scab)
 若有对象加入Application的范围,通知正在收听的对象
 void attributeRemoved(ServletContextAttributeEvent scab)
 若有对象从Application的范围移除,通知正在收听的对象
 void attributeReplaced(ServletContextAttributeEvent scab)
 若在Application的范围中,有对象取代另一个对象时,通知正在收听的对象


 ServletContextAttributeEvent中的方法:
 java.lang.String getName()
 回传属性的名称
 java.lang.Object getValue()
 回传属性的值

二、HttpSession相关监听接口
 1.HttpSessionBindingListener接口
 注意:HttpSessionBindingListener接口是唯一不需要再web.xml中设定的Listener

 当我们的类实现了HttpSessionBindingListener接口后,只要对象加入Session范围(即调用HttpSession对象的setAttribute方法的时候)或从Session范围中移出(即调用HttpSession对象的removeAttribute方法的时候或Session Time out的时候)时,容器分别会自动调用下列两个方法:
 void valueBound(HttpSessionBindingEvent event)
 void valueUnbound(HttpSessionBindingEvent event)

 思考:如何实现记录网站的客户登录日志, 统计在线人数?

 2.HttpSessionAttributeListener接口
 HttpSessionAttributeListener监听HttpSession中的属性的操作。
 当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。这和ServletContextAttributeListener比较类似。

 3.HttpSessionListener接口
 HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session Created(HttpSessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。

 4.HttpSessionActivationListener接口
  主要用于同一个Session转移至不同的JVM的情形。

四、ServletRequest监听接口
 1.ServletRequestListener接口和ServletContextListener接口类似的,这里由ServletContext改为ServletRequest
 2.ServletRequestAttributeListener接口和ServletContextListener接口类似的,这里由ServletContext改为ServletRequest 

Servlet 监听器接口详解(Listener) 监听器 Listener 是一个实现特定接口的程序,它基于观察者模式实现,可以在程序运行时对事件进行监控和响应。分离关注点:将事件处理逻辑和业务逻辑分离,使程序更加模块化和易于维护。降低耦合性:将事件的产生和处理解耦,使程序更加灵活和可扩展。提高可重用性:监听器可以重复使用,减少代码冗余。提高程序响应速度:当事件发生时,监听器可以立即响应,提高程序响应速度。提高程序的可靠性:监听器可以对程序中可能发生的异常进行处理,提高程序的健壮性和可靠性。 阅读详情

相关推荐

波分复用-Zblock仿真

Z-BLOCK是一种用于光通信模块的光学元件,其核心结构是在玻璃块一侧贴有4个特定波长滤光片,另一侧镀有反射膜和增透膜。光信号在内部呈现Z字形反射路径,实现波长分离。文章以可见光LED为例,在ZEMAX中演示了非序列模式下的建模过程,重点介绍了滤光片和膜层的参数设置方法。需要注意的是,入射角度需根据玻璃折射率、通道高度和厚度精确计算,否则可能导致光泄漏。该建模方法同样适用于光通信中的光纤激光器系统。

Zhaxibamao的博客 1756

Web事件处理与过滤器

Web事件处理与过滤器 实验预习内容 在Servlet 2.4规范中共定义了三种对象上的6种事件类型和8个事件监听器接口,他们分别是什么?请用表格形式上表示出来。 如何配置Servlet监听器程序? <listener> <listener-class> listener.MyServletContextListener </listener-class> </listener> 简述过滤器的工作原理

Mycat的博客 1439

国产麒麟系统下Kettle安装避坑指南:解决aarch64架构不支持问题

本文详细解析了在国产麒麟系统上部署Kettle时遇到的aarch64架构不支持问题,提供了从获取适配的SWT库、修改启动脚本到生产环境调优的完整解决方案。文章重点解决了ARM架构与Java GUI工具的兼容性挑战,并分享了内存配置、字体显示及Carte服务部署等实战经验,助力用户在国产化环境中稳定运行ETL流程。

weixin_29197835的博客 562

Servlet八大监听器+统计网站在线人数Demo

引入: Servlet监听器可以让Web容器在特定的事件发生时,执行特定的操作,采取适当的动作进行反馈。 在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别 HttpSession,ServletContext和ServletRequest这三个域对象,和其它事件监听器略有不同的是,servlet监听器的注册不是直接注册在事件源上,而是由WEB容器负责注册,开发人员只需在w...

ToBe_Coder的博客 522

从零到一:手把手教你用C#开发AGV调度系统(附避坑指南)

本文详细介绍了如何使用C#开发高效的AGV调度系统,涵盖从环境搭建到核心算法实现的完整流程。重点解析了动态路径规划、多机协同等关键技术,并提供了实用的避坑指南和性能优化建议,帮助开发者快速构建工业级车辆控制调度系统。

blockchain9miner的博客 742

ros2 gazebo仿真阿克曼小车搭载livox mid360雷达流程

流程简介:仿真环境的搭建需要安装ROS2和Gazebo。使用的是Humble版本,需要确认是否已经正确安装。然后是阿克曼小车模型的URDF,需要包括底盘、转向机构、驱动轮等,需要参考现有的阿克曼模型,比如ClearPath的Husky,但需要调整参数。Livox Mid360雷达在Gazebo中的仿真可能没有现成的插件,需要使用通用3D LiDAR插件来模拟。IMU的仿真相对简单,但需要注意噪声模型,以接近真实数据。

weixin_43802726的博客 3211

四、监听器

一、概述 监听器用于监听事件,如WEB启动、关闭,session链接、断开,用户请求到达,某某范围类属性值发生改变。 当事件发生时会回调监听器里的方法。 定义监听器需要两个步骤   1、定义Listener实现类。   2、通过Annotation或web.xml文件来配置。 二、监听器类型 按监听的对象划分:servlet2.4规范定义的事件有三种: 1.用于监听...

205

PCL 三维重建 泊松曲面重建算法

本文介绍了基于泊松曲面重建算法的三维重建过程。泊松重建是一种利用点云数据生成三维表面的算法,它基于点云的法线估计和泊松方程的求解,能够生成光滑且连续的曲面模型。该方法适用于复杂形状和细节的表面重建。

纵马踏花向自由 1090

【JavaWeb】之Servlet监听器

JavaWeb基础Servlet监听器相关知识介绍~

小新要变强的博客 3873

ClawManager实战:OpenClaw批量部署+精细化权限管控,运维效率拉满90%

ClawManager彻底解决了OpenClaw规模化部署的运维痛点,它不是简单的“批量部署工具”,而是一套完整的企业级管理方案——从模板配置、批量部署,到权限管控、监控审计、AI治理,覆盖OpenClaw全生命周期管理,让OpenClaw从“个人工具”升级为“企业级AI基础设施”。对于中小企业,Docker一键部署即可快速落地,无需复杂配置;对于大型企业,K8s部署支持高可用、横向扩展,结合Keycloak对接企业现有认证系统,可完美融入企业IT架构。

2601_94871597的博客 612

Python爬虫实战:逆向解析腾讯视频API,高效获取结构化视频信息

首先,我们定义期望获取的数据结构,这有助于数据验证和代码清晰度。python"""腾讯视频信息数据模型"""title: str = Field(..., description="视频标题")vid: str = Field(..., description="视频唯一ID")play_count: Optional[int] = Field(None, description="播放量")

2201_76125261的博客 2380

Servlet监听器

Servlet监听器是Java Web应用中用于监听特定事件(如应用生命周期、会话创建/销毁、请求处理等)的组件。合理使用Servlet监听器能有效增强应用功能,但需权衡性能影响,避免过度使用。

xiake1573的博客 1657

手机端实时检测:YOLOv8n轻量化改进,骁龙865上35FPS,mAP+3.2%

YOLOv8n-Lite的改进不是简单的“砍通道、降分辨率”,而是结合手机端硬件特性(NPU加速、内存限制)和场景需求(小目标检测),通过“卷积拆分减少计算、通道瘦身适配内存、特征强化保留精度”的协同策略,在骁龙865上实现35FPS实时性与mAP+3.2%的双赢。该方案已在手机端AR应用中落地,支持实时手势识别、物体测量等功能,功耗比原始模型降低40%(连续检测1小时仅耗电12%)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 726

Servlet监听器详解及举例

监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。监听器原理监听原理 1、存在事件源 2、提供监听器 3、为事件源注册监听器 4、操作事件源,产生事件对象,将事件对象传递给监听器,并且执行监听器相应监听方法监听器典型案例:监听window窗口的事件监听器 例如:swing开发首先

Megustas_JJC的博客 1139

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Servlet之监听器

文章目录五、监听器(一)监听器相关设计模式1.设计模式2.三类设计模式3.观察者设计模式4.监听器设计模式(二)监听器Listener1.Servlet规范中的监听器2.ServletRequestListener监听器3.ServletRequestAttributeListener监听器4.HttpSessionListener监听器5. HttpSessionAttributeListener监听器6.ServletContextListener监听器7. ServletContextAttribut

叶卡捷琳堡的博客 1096

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

servlet监听器

servlet监听器 导读模块:虽然监听器的作用很强大,但是servlet中并没有相关的实现类,只是有一些接口,而这也恰恰体现出了servlet的灵活性 servlet中的监听器主要是针对request,session,servletContext开展的 监听听器要想起作用则必须要有实现类,而实现类要起作用,则必须要有动作,所谓的动作其实就是事件,所谓的事件就是与之关联的一些类 svlet中一共有8个监听器接口,6个事件 ServletContextListener接口 监听服务器启动与关闭 接

qiufengex的博客 1163

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Servlet监听器和Spring监听器

1.Servlet监听器 ServletContext、HttpSession、ServletRequest的监听都是通过javax.servlet 包下定义的,他们都是servlet的特性,换句话说,他们不依赖于Spring,而依赖于web容器(tomcat容器),他们的加载优先于Spring容器 Servlet监听器有用处,但是没有Spring监听器用的多,用的方便;并且通常可以用HttpServletRequest和HttpServletResponse实现相同的需求 Servlet监听器提供了很多

ZJH 1478

JSP的Servlet监听器

Servlet 监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。目前 Servlet2.4 和 JSP2.0 常用的有7个监听器接口,分为3类: 1. Servlet上下文进行监听(Application级): 用于监听 ServletContext 对象的创建和删除以及属性的添加、删除和修改等操作,该监听器需要用到如下两个接口类: (1) Servlet

phoenix_17th的专栏 3463

servlet HttpSession 监听器

http://blog.csdn.net/wyzsc/article/details/6258567   一、Servlet中对象作用域 1、  ServletContext 上下文 应用服务器一启动就产生该对象,服务器关闭即销毁 作用于全局,所有Servlet ,相当于静态变量 2、  HttpSession 会话 客户端第一次请求产生,session过期销毁 作用于同一个客户端

dreamoftch的专栏 1228

【Servlet】Servlet监听器

一、Servlet监听器的概念 Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext、HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件。 监听对象: 1、ServletContext:application,整个应用只存在一个 2、HttpSession:session,...

weixin_30376323的博客 132
上一篇: java 格式化字符串输出
下一篇: 关于Session生命周期的问题
programloverjack
博客等级 码龄17年 5粉丝 252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值