「这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战」。
哈喽大家好,我是阿Q!今天就给大家来简单总结下监听器的相关知识。
什么是监听器?
监听器就是监听某个对象的状态变化的组件
概念介绍
- 事件源:被监听的对象 ----- 三个域对象 request、session、servletContext
- 监听器:监听事件源对象,事件源对象的状态的变化都会触发监听器 ---- 6+2 个(后边介绍)
- 注册监听器:将监听器与事件源进行绑定
- 响应行为:监听器监听到事件源的状态变化时,所涉及的功能代码 ---- 程序员编写代码
监听器分类(6种)
- 按照被监听的对象划分:ServletRequest域、HttpSession域、ServletContext域
- 按照监听的内容划分:监听域对象的创建与销毁的、监听域对象的属性变化的
监听器的编写步骤(重点)
(1)编写一个监听器类去实现监听器接口 (2)覆盖监听器的方法
(3)需要在web.xml中进行配置---注册
ServletContextListener监听器的作用:
- 初始化的工作:初始化对象,初始化数据 ---- 加载数据库驱动,连接池的初始化
- 加载一些初始化的配置文件 --- spring的配置文件
- 任务调度----定时器----Timer/TimerTask
例如:
//定时器
Timer timer = new Timer();
//执行的任务;开始时间;间隔时间;
timer.schedule(new TimerTask(){
@Override
public void run(){
System.out.println("执行任务。。。");
}
},new Date(),5000);
复制代码
属性监听器中的方法
public void attributeReplaced(ServletContextAttributeEvent scab){
//是获得修改前的属性名与值
scab.getName();
scab.getValue();
}
复制代码
与session中的绑定的对象相关的监听器(对象感知监听器不需要配置)(2种)
即将要被绑定到session中的对象有几种状态?
- 绑定状态:就一个对象被放到session域中
- 解绑状态:就是这个对象从session域中移除了
- 钝化状态:是将session内存中的对象持久化(序列化)到磁盘
- 活化状态:就是将磁盘上的对象再次恢复到session内存中
绑定与解绑的监听器 HttpSessionBindingListener
钝化与活化的监听器 HttpSessionActivationListener(对服务器进行优化)
服务器关闭钝化,服务器再次开启活化,前提是必须实现 Serializable 接口
可以通过配置文件指定对象钝化时间 --- 对象多长时间不用被钝化:在META-INF下创建一个context.xml,将下列代码复制:
<Context>
<!-- maxIdleSwap:session中的对象多长时间不使用就钝化单位分钟 -->
<!-- directory:钝化后的对象的文件写到磁盘的哪个目录下,配置钝化的对象文件在work/catalina/localhost/钝化文件 -->
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="itcast205" />
</Manager>
</Context>
复制代码
题外篇
阿Q将持续更新
java
实战方面的文章,感兴趣的可以关注下公众号:阿Q说代码
,也可以来技术群讨论问题呦,点赞之交值得深交!