Listener

1、作用

Listener : 监听器 。用于监听某一个事件的发生。

2、分类
1)监听三个域对象创建销毁

用于监听 三个域对象的创建销毁事件
request ----httpServletRequest
session----httpSession
application ----ServletContext ServletContextListener
监听ServletContext创建销毁 创建 :服务器启动为每一个应用创建一个ServletContext实例
销毁:关闭服务器,或者项目从服务器中移除 作用: 完成初始化工作;执行自定义任务调度。Timer
ServletRequestListener 监听ServletRequest创建销毁 创建:只要有请求过来,不管请求什么东西,
服务器都会帮我们创建一个request实例 销毁:当服务器对这次请求作出了响应,那么就销毁了这个实例 HttpSessionListener
监听session的创建销毁 创建:服务器调用getSession 或者 访问jsp 会创建 session实例 销毁:会话超时 ,
非正常关闭 服务器(正常关闭服务器 ,session会序列化。) 作用:统计在线人数 用法: 三个用法都一样,

  1. 定义一个类, 实现对应的接口。
  2. 在 web.xml 中 使用listener 元素来注册

2)监听三个域对象值变更

ServletContextAttributeListener --------- ServletContext
监听ServletContext 域中的属性改变 , 添加 | 替换 | 移除
ServletRequestAttributeListener ---------- request
监听ServletRequest 域中的属性改变 , 添加 | 替换 | 移除
HttpSessionAttributeListener-------------------session
监听HttpSession 域中的属性改变 , 添加 | 替换 | 移除
用法一样:

  1. 定义一个了类,实现对应的接口
  2. 在web.xml中使用listener 注册
  3. 对三个域分别作出 添加 | 替换 | 移除的动作。

3)监听httpSession中的值改变

这一类监听器与前两种监听器不太一样。这种监听器无需在web.xml中配置, 只需要让javaBean实现对应的接口即可。
HttpSessionBindingListener 让JavaBean使用该接口

@Override
public void valueBound(HttpSessionBindingEvent event) {
	System.out.println("对象被绑定到了session上面去了");
	}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
	System.out.println("对象从session中移除了。");	
} 
HttpSessionBindingListener 主要监听的是 对象与session域的绑定和解绑的事件
 HttpSessionActivationListener
		@Override
public void sessionWillPassivate(HttpSessionEvent se) {
	System.out.println("对象被钝化了...");
}
	@Override
public void sessionDidActivate(HttpSessionEvent se) {
	System.out.println("对象被活化了...");
	}

HttpSessionActivationListener 监听的是 对象被钝化 和 活化的事件 。

钝化:正常关闭服务器或者超过了规定时间,那么对象将会被 钝化(序列化)到硬盘上 。
活化:重新启动服务器, 那么之前钝化的数据将会被活化(反序列化。)

3、Session优化

Session中通常可以存数据的,那么我们可以把一些长时间不使用的数据给序列化到硬盘上,等再使用的时候,可以从硬盘反序列化回来。这样节省了不少内存空间。

如果想做到这个事情,我们可以通过配置,让服务器帮我们去完成这项工作。 配置主要有以下三种方式:

  1. 在tomcat中 conf/context.xml中配置 : 对服务器上部署的左右域名都生效
  2. 在 conf/Catalina/location/context.xml中配置 只针对localhost 域名生效
  3. 在web工程项目中 MATA-INF/context.xml中配置 只针对当前的工程生效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值