感知SessioSession 绑定的事件监听器

保存在Session 域中的对象可以有多钟状态,绑定到Session 中,从Session 域中解除绑定,随Session 对象持久化到一个存储设备中,随Session 对象从一个存储设备中恢复。
Servlet 规范中定义了两个特殊的监听器接口来帮助JavaBean 对象了解自己在Session 域中的这些状态。
HttpSessionBindingListener 接口
HttpSessionActivationListener 接口
实现这两个接口的类不需要在web.xml 文件中进行注册。
(1)HttpSessionBingdingListener 接口,此技术可以用来实现web页面踢人技术
实现了HttpSessionBingdingListener 接口的JavaBean 对象可以感知自己被绑定到session 中和从session 中删除的事件。当对象被绑定到了HttpSession 对象中,web 服务器调用该对象的valueBound 方法,反之当对象从session 中被删除的时候, web 服务器调用该对象的valueUnbound 方法。
(2)HttpSessionActivationListener 接口

实现了HttpSessionActivationListener 接口的JavaBean 对象可以感知自己被活化和钝化的事件。当绑定了HttpSession 对象中的对象将要岁Session 对象被钝化之前,web 服务器调用该对象的sessionWillPassivate 方法,当绑定到HttpSession 对象中的对象将要随HttpSession对象被活化之后,web 服务器调用该对象的void sessionDidActive(HttpSessionBindingEventevent)方法。

钝化:值将session有内存保存到硬盘中。

活化:将session从硬盘中导入到内存中

下面是示例代码:

//HttpSessionBingdingListener 监听器

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

public class MyBean implements HttpSessionBindingListener {

	private String name;
	
	
	public void valueBound(HttpSessionBindingEvent event) {
		System.out.println("自己被加到session中了");

	}

	public void valueUnbound(HttpSessionBindingEvent event) {
		System.out.println("自己被session踢出来了");

	}

}

//HttpSessionActivationListener接口

import java.io.Serializable;


import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;

//一定要实现Serializable接口,否则不能被系列化
public class MyBean2 implements HttpSessionActivationListener,Serializable {


	public void sessionDidActivate(HttpSessionEvent se) {
		System.out.println("session从硬盘回到内存了");
	}


	public void sessionWillPassivate(HttpSessionEvent se) {
		System.out.println("session被序列化到硬盘了");


	}


}

需要注意的是,要将session序列化到硬盘中,需要实现Serializable接口。否则无法序列化。钝化和活化的技术,可以缓解服务器存储压力,当session过期,可以不用将其销毁,直接存到硬盘,到下次在访问是,直接从硬盘中加载多内存。这样不用在需要在服务器内存中申请存放session的空间。钝化和活化还需要建一个context.xml配置文件,如下:

<Context>
	<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
	<Store className="org.apache.catalina.session.FileStore" directory="it315"/>
	</Manager>
</Context>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值