JavaWeb之监听器

监听器

Servlet中存在一个EventListener接口,该接口有很多的子接口,如ServletContextListener、HttpSessionListener、ServletRequestListener等 用于监听ServletContext、HttpSession、ServletRequest等对象的创建和销毁,以及属性修改

监听ServletContext、HttpSession、ServletRequest等对象的创建和销毁

  • ServletContextListener 服务器启动时创建,调用contextInitialized方法;服务器正常关闭时销毁调用contextDestroyed方法
  • HttpSessionListener 第一次访request.getHttpSession创建,调用sessionCreated方法;调用invalidate或者过期销毁,调用sessionDestroyed方法
  • ServletRequestListener 每一次访问创建,调用requestInitialized方法; 响应结束销毁,调用requestDestroyed方法

以ServletContextListener为例

java 复制代码
// 当Servlet容器启动或终止Web应用时,会触发ServletContextEvent事件,该事件由ServletContextListener处理
public interface ServletContextListener extends EventListener {
  	// 启动Web应用时调用该方法,该方法结束后才会对Filter进行初始化
    void contextInitialized(ServletContextEvent var1);
		// web应用终止时调用该方法,该方法在Servlet和Filter销毁之后调用
    void contextDestroyed(ServletContextEvent var1);
}

实现相应的接口,监听不同的域对象

xml 复制代码
<!-- web.xml -->
<listener>
	<listener-class>

场景: ServletContextListener最常用,在当前WEB应用加载的时候对当前WEB应用的相关资源进行初始化操作:创建数据库连接池,创建Spring的IOC容器,读取当前WEB应用的初始化参数

监听域对象 ServletContext、HttpSession、ServletRequest 属性变更的监听器

  • ServletContextAttributeListener attributeAdded attributeRemoved attributeReplaced
  • HttpSessionAttributeListener attributeAdded attributeRemoved attributeReplaced
  • ServletRequestAttributeListener attributeAdded attributeRemoved attributeReplaced

感知session绑定的监听器

​ 保存到Session域中的对象可以有多种状态:绑定到Session中,从Session中解除绑定;随Session对象持久到到一个存储设备中;随Session对象从一个存储设备中恢复 ​ HttpSessionBindingListener和HttpSessionActivationListener接口,实现这两个接口不需要在web.xml文件中注册

放到session中的对象实现HttpSessionBindingListener 会触发两个方法 绑定valueBound 解除valueUnBanding

实现了HttpSessionActivationListener接口的对象可以感知自己被钝化和被活化的事件 sessionWillPassivate 从内存写到磁盘 sessionDisActivate 从磁盘中读取出来

session会被存储在tomcat当前项目下 .cer文件

zhhll.icu/2021/javawe...

本文由mdnice多平台发布

相关推荐
码兄科技2 小时前
Java AI智能体开发实战:从零构建智能对话系统指南
java·开发语言·人工智能
折哥的程序人生 · 物流技术专研3 小时前
第8篇:六大设计原则在工厂模式中的体现
java·设计模式·设计原则·工厂模式·编程进阶·扩充系列
小明bishe183 小时前
计算机毕业设计之基于JAVA的植物科普网站
java·spring boot·spring·架构·课程设计
r_oo_ki_e_3 小时前
Java Map 集合学习笔记
java·笔记·学习
SL-staff4 小时前
智慧园区2000+设备统一管理:JVS-IoT如何降低运维成本40%
java·开发语言·物联网·智慧园区·设备管理·运维优化·jvs-iot
咖啡八杯4 小时前
GoF设计模式——模板方法模式
java·后端·spring·设计模式
爱笑的源码基地5 小时前
一款全开源的信创云PACS影像云平台解决方案,支持多模态医学影像处理(CT/MR/DR/超声/病理等)
java·源码·国产化·pacs·云影像·区域pacs
我命由我123455 小时前
Android 开发问题:ClickableSpan 的点击事件没有生效
java·java-ee·android studio·android jetpack·android-studio·android runtime
万亿少女的梦1686 小时前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
微信开发api-视频号协议6 小时前
企业微信外部群开发自动化实践过程
java·前端·微信·自动化·企业微信·ipad