servlet监听

本文详细阐述了Servlet监听器的原理与应用,包括监听器的类型、如何编写监听器以及监听不同域对象(如ServletContext、HttpSession和ServletRequest)的创建、销毁及属性变化的事件。了解如何利用监听器实现特定的业务逻辑。
servlet监听

监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。

Servle监听器

l 在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为 ServletContext, HttpSessionServletRequest 这三个域对象。

l Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型。

• 监听三个域对象创建和销毁的事件监听器

• 监听域对象中属性的增加和删除的事件监听器

• 监听绑定到 HttpSession域中的某个对象的状态的事件监听器。(查看API文档)

监听servletContext域对象创建和销毁

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

l 当 ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法

当ServletContext 对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。

编写 Servlet 监听器

l 和编写其它事件监听器一样,编写servlet监听器也需要实现一个特定的接口,并针对相应动作覆盖接口中的相应方法。

l 和其它事件监听器略有不同的是,servlet监听器的注册不是直接注册在事件源上,而是由WEB容器负责注册,开发人员只需在web.xml文件中使用<listener>标签配置好监听器,web容器就会自动把监听器注册到事件源中。

l 一个 web.xml 文件中可以配置多个 Servlet事件监听器,web 服务器按照它们在web.xml 文件中的注册顺序来加载和注册这些Serlvet 事件监听器。

监听HttpSession域对象创建和销毁

l HttpSessionListener接口用于监听HttpSession创建和销毁

l 创建一个Session时,sessionCreated(HttpSessionEventse) 方法将会被调用。

l 销毁一个Session时,sessionDestroyed(HttpSessionEvent se) 方法将会被调用。

l Session域对象创建和销毁的时机创建:用户每一次访问时,服务器创建session

• 销毁:如果用户的session30分钟没有使用,服务器就会销毁session,我们在web.xml里面也可以配置session失效时间

监听HttpRequest域对象创建和销毁

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

l Request 对象被创建时,监听器的requestInitialized方法将会被调用。

l Request对象被销毁时,监听器的requestDestroyed方法将会被调用。

l (此处复习request对象,在浏览器窗口中多次刷新访问servlet,看request对象的创建和销毁,并写一个servlet,然后用sendRedirect、forward方式跳转到其它servlet,查看request对象的创建和消耗)

l servletRequest域对象创建和销毁的时机:

• 创建:用户每一次访问,都会创建一个reqeust

销毁:当前访问结束,request对象就会销毁

监听三个域对象属性变化

l Servlet规范定义了监听ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器。

l 这三个监听器接口分别是ServletContextAttributeListener,HttpSessionAttributeListener ServletRequestAttributeListener

这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同

attributeAdded 方法

l 当向被监听器对象中增加一个属性时,web容器就调用事件监听器的attributeAdded 方法进行相应,这个方法接受一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象

l 各个域属性监听器中的完整语法定义为:

• public void attributeAdded(ServletContextAttributeEvent scae)

• public void attributeReplaced(HttpSessionBindingEvent hsbe)

• public void attributeRmoved(ServletRequestAttributeEvent srae)

attributeRemoved 方法

l 当删除被监听对象中的一个属性时,web 容器调用事件监听器的这个方法进行相应

l 各个域属性监听器中的完整语法定义为:

public void attributeRemoved(ServletContextAttributeEvent scae)

public void attributeRemoved (HttpSessionBindingEvent hsbe)

public void attributeRemoved (ServletRequestAttributeEvent srae)

attributeReplaced 方法

l 当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的这个方法进行相应

l 各个域属性监听器中的完整语法定义为:

public void attributeReplaced(ServletContextAttributeEvent scae)

public void attributeReplaced (HttpSessionBindingEvent hsbe)

public void attributeReplaced (ServletRequestAttributeEvent srae)

Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值