学习笔记 · JavaWeb持久化监听器-HttpSessionActivationListener
作者:氯磷Rolin
- HttpSessionBindingListener 绑定对象的监听器
HttpSessionActivationListener
Session的持久化
钝化后可以保存到磁盘,文件名为:sessionid.session,下次客户端访问原来的会话(服务器关闭之前的)只要带上原来的sessionid即可把上一次的会话找回来(活化)
-
HttpSessionActivationListener监听器用于监听Session的钝化与活化
-
钝化(序列化):在服务器出现异常关闭时或者在Session销毁之后,将用户的Session通过序列化之后保存到硬盘上
-
活化(反序列化):在服务器重启之后,将硬盘上钝化的Session文件加载进服务器的内存,使之用户可以继续正常的访问
-
Javabean实现该接口之后,可以感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)的过程。
-
如果需要同时保存Session中的JavaBean则JavaBean也必须要实现Serializable序列化接口。
-
Serializable接口的原因是因为Session要保存到本地,需要转化为二进制流,如果不实现该接口的话,在反序列化中可能会出现InvalidClassException异常
-
实现此接口的JavaBean与HttpSessionBindingListener一样,不必配置到web.xml中。
具体实现
- 创建JSP页面,用于第一次输入用户名并可以显示当前用户名和JSESSION
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>HttpSessionActivationListener测试</title> </head> <body> <% if(session.getAttribute("user")==null) session.setAttribute("user",new user("无用户")); //防止NullPointException异常 %> <form action=