感知SessioSession 绑定的事件监听器
来源:互联网 发布:宜人贷淘宝验证未通过 编辑:程序博客网 时间:2024/05/16 19:35
保存在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 接口
需要注意的是,要将session序列化到硬盘中,需要实现Serializable接口。否则无法序列化。钝化和活化的技术,可以缓解服务器存储压力,当session过期,可以不用将其销毁,直接存到硬盘,到下次在访问是,直接从硬盘中加载多内存。这样不用在需要在服务器内存中申请存放session的空间。钝化和活化还需要建一个context.xml配置文件,如下:
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
- 感知SessioSession 绑定的事件监听器
- 绑定事件监听器
- 编写感知Session绑定状态的监听器是出现java.lang.NoSuchMethodException异常
- session绑定的事件监听器的应用(统计在线用户)
- Android控件之Button点击事件监听器的绑定
- 【事件绑定的方式】兼容浏览器的事件监听器的设计
- Servlet的事件监听器
- Servlet的事件监听器
- 使用jquery mobile Collapsible Widget 时绑定expand,collapse事件监听器的方法
- android studio for android learning (十八) android事件监听器绑定的方法详解
- jsp--对象感知监听器
- 监听器的配置,绑定HttpSessionListener监听器的使用
- J2ME:rms的事件监听器
- J2ME:rms的事件监听器
- java_事件监听器的实现
- 事件与监听器的类型
- java的事件监听器学习
- 多个监听器的绑定与监听
- POJ - 1182 食物链(并查集)
- 开始细细品味
- Java多媒体播放器(四)
- 3Sum
- Merge K sorted Lists
- 感知SessioSession 绑定的事件监听器
- DedeCMS5.7去掉友情链接中“织梦链投放”“织梦链”的方法
- JAVA设计模式学习
- 如何调用Android隐藏API
- 主键列分页的动态存储过程
- Esper学习之十一:EPL语法(七)
- 线程小记
- MySQL命令出现字符错误提示原因
- NSURLRequest 官方文档 详析