Java Session对象的钝化和活化

Java Session对象的钝化和活化

钝化和活化的本质是序列化和反序列化
钝化:将内存中的session对象存储到硬盘,防止会话结束后session遗失。
活化:钝化的逆过程,读取硬盘中的session对象于内存中。
实现钝化的操作步骤如下:
1.配置apache-tomcat-9.0.27\conf\context.xml文件

   "org.apache.catalina.session.PersistentManager" maxIdleSwap="2">
        "org.apache.catalina.session.FileStore" directory="pow" />
    

上面的maxIdleSwap是最大时间限制,单位是秒,超过了这个时间,内存中的session对象,会自动的存储到directory指定的目录:apache-tomcat-9.0.27\work\Catalina\localhost\该项目\pow中。
2.创建一个监听器,并实现HttpSessionActivationListener,Serializable这两个接口
第一个接口实现监听(钝化和活化)的功能,第二个接口实现反序列化(活化)。
特别说明一下:该监听器不需要额外的配置web.xml.

public class A implements HttpSessionActivationListener,Serializable{
     
private String key;
public String setKey(String key){
     
this.key = key ;
}
public String getKey(){
     
return key;
}
@Override
 public void sessionDidActivate(HttpSessionEvent se) {
     
  System.out.println("活化完成!!!");
 }
 @Override
 public void sessionWillPassivate(HttpSessionEvent se) {
     
  System.out.println("钝化完成!!!");
 }
}

3.我们现在就可以通过jsp将上面的实例化对象放入session中


钝化页面:
  <%
  A a = new A();
  a.setKey("卢泽龙大帅比");
  session.setAttributte("a",a);
  %>


运行上面的jsp过了一段时间就会看见控制台提示钝化完成!!
此时apache-tomcat-9.0.27\work\Catalina\localhost\该项目中可以看见新创建的文件夹pow。
4.验证(调用硬盘里面的session):

<body>
活化页面:<br/>
key的值为${sessionScope.a.key}
body>

结果很成功的取出key值为“卢泽龙大帅比”,并且控制台打印出活化完成!
这些只是在下的片面理解,如有不对还望大佬指教!

你可能感兴趣的:(javaweb,java,session)