WEB27_Listener

Listener介绍:

监听器,负责监听一些浏览器与服务器的动作,来完成某些事情

监听的参与者:

事件源:触发监听器

监听器:监听事件源    6+2:6个监听器+两个监听器

绑定:负责绑定监听器与事件源

响应事件:监听器被触发后的动作

Listener类型:

6个监听器:

分类一:按照监听的对象划分:ServletContext域,HttpSession域,ServletRequest域

分类二:按照监听的范围划分:域的创建与销毁,域的内容的改变

开始敲代码

一.记住各个域的生命周期有利于理解该在什么时候使用那个监听器.

二.步骤:1.实现监听器接口 2.覆盖监听器方法 3.在web.xml中使用<listener>标签注册监听器

创建与销毁的监听器

ServletContext:

ServletContext生命周期:

创建:服务器开启

销毁:服务器关闭

1.实现监听器接口 2.覆盖监听器方法

3.在web.xml中使用<listener>标签注册监听器

Servlet测试:

结果:

ServletContext监听器的主要作用:

1.初始化工作:初始化对象与数据-----加载数据库驱动,连接池初始化

2.加载一些初始化的配置文件:比如Spring的配置文件

3.任务调度:使用Timer与TimerTask    比如,服务器每24小时打印一次日志

另外两个HttpSession域与ServletRequest域的创建与销毁的监听器也是如此步骤.

只是要注意一下生命周期:

HttpSession:创建:第一次调用request.getSession() 销毁:服务器关闭,session到期,手动调用invalidate()

ServletRequest:创建:每次请求开始  销毁:请求结束

域内容修改的监听器

1.实现监听器接口 2.覆盖监听器方法

3.在web.xml中使用<listener>标签注册监听器

略..

Servlet测试:

结果:略....

剩下的两种监听器:与Session域绑定的对象有关的监听器(对象感知监听器)

注意:这两种监听器都是用到要绑定的对象上的

绑定到Session域的对象的几种状态:

绑定状态:一个对象将被加入Session域

解绑状态:一个对象将被从Session域移除

钝化状态:对象从Session域持久化到磁盘上

活化状态:对象从磁盘恢复到Session域

第一个:HttpSessionBindingListener(绑定与解绑)

1.实现监听器接口 2.覆盖监听器方法

3.不需要注册

Servlet绑定测试:

结果:

第二个:HttpSessionActivationListener(钝化与活化)

1.实现监听器接口 2.覆盖监听器方法

3.不需要注册

我们可以通过在/WebRoot/META-INF文件夹下创建一个xml文件来控制钝化的时间与钝化的对象存储的位置

<?xml version="1.0" encoding="UTF-8"?>
<Context>
 <!-- maxIdleSwap:session中的对象多长时间不使用就钝化 -->
 <!-- directory:钝化后的对象的文件写到磁盘的哪个目录下  配置钝化的对象文件在												work/catalina/localhost/钝化文件 -->
 <Manager className="org.apache.catalina.session.PersistentManager" 																				maxIdleSwap="1">
  <Store className="org.apache.catalina.session.FileStore" directory="myFile" />
 </Manager>
</Context>

Servlet测试:

结果:

钝化的作用:可以作为优化服务器的一方面:通过钝化一些一段时间不用的Session来减少服务器的压力.

钝化的对象存在哪里?

发布了94 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_38827988/article/details/88853077