Session的活化与钝化

HttpSessionActivationListener ------会话的持久化:
*实现此接口的JavaBean,可以感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)的过程。
*如果需要同时保存Session中的JavaBean则JavaBean也要实现Serializable序列化接口。
*实现此接口的JavaBean与HttpSessionBindingListener一样,不必配置到web.xml中。

要实现此功能,必须要先配置以下信息:(代码演示)

第一步:书写一个JavaBean,并实现HttpSessionActivationListener接口如下:

第二步:JSP页面,判断是否存在Person,如果没有将Person放到Session中:
第三步:配置Tomcat的Server.xml文件或是将配置好的xml发布文件放到CATALIINA_HOME\conf
\Catalina\localhost目录下:(绿色发布项目的方式)
directory=“d:/a”是指Session文件保存的目录。
docBase="E:/MyEclipse10_workspace/sessionActivationWeb/WebRoot">是指你项目在MyEclipse保存的路径
saveOnRestart="true"这个值就是你是否进行session活化钝化
a.xml<Context path="/sessionActivationWeb"    
docBase="E:/MyEclipse10_workspace/sessionActivationWeb/WebRoot">
<Manager className="org.apache.catalina.session.PersistentManager"
  saveOnRestart="true">
  <Store className="org.apache.catalina.session.FileStore"
         directory="d:/a"> </Store>
</Manager>
</Context>
<------代码演示--------->
index.jsp
<body>
    <%if(session.getAttribute("p")==null){
        int n = new Random().nextInt(100);
        Person p = new Person("Jack"+n);
        session.setAttribute("p", p);
        }
    System.out.println(session.getId()+"--"+ session.getAttribute("p"));
    Date d = new Date( session.getCreationTime() );
    System.out.println( new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d) );
    %>
  </body>
Person.java
ublic class Person implements HttpSessionActivationListener,Serializable{
private String name;
public Person(String name) {
this.name = name;
}
public Person() {
}
@Override
public void sessionWillPassivate(HttpSessionEvent se) {
System.out.println("被保存到硬盘了:"+name);
}
@Override
public void sessionDidActivate(HttpSessionEvent se) {
System.out.println("从硬盘活化了:"+name);
}
//当浏览器重新访问的时候session还存在session中的person对象也没变
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值