会话的持久化:
本篇解决一个问题,就是当正在浏览页面的时候服务器突然关闭,浏览器不关闭,当再次开启服务器时还能够恢复关闭时的页面
HttpSessionActivationListener
实现此接口的JavaBean,可以感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)的过程。
如果需要同时保存Session中的JavaBean则JavaBean也要实现Serializable序列化接口。
实现此接口的JavaBean与HttpSessionBindingListener一样,不必配置到web.xml中。
要实现此功能,必须要先配置以下信息:
第一步:书写一个user类:并实现HttpSessionActivationListener接口及Serializable接口如下:
package com.xushuai.entities;
import java.io.Serializable;
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;
public class User implements HttpSessionActivationListener,Serializable{
private static final long serialVersionUID = 1L;
private String uname;
private String passowrd;
private String money;
public User() {
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPassowrd() {
return passowrd;
}
public void setPassowrd(String passowrd) {
this.passowrd = passowrd;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
@Override
public void sessionWillPassivate(HttpSessionEvent se) {
System.out.println("钝化---保存到磁盘上了------");
}
@Override
public void sessionDidActivate(HttpSessionEvent se) {
System.out.println("活化---从磁盘中读取出来了");
}
}
第二步:创建一个TestServlet把User 实例化放到Session中
package com.xushuai.Servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.xushuai.entities.Student;
import com.xushuai.entities.User;
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public TestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
User user =new User();
session.setAttribute("user", user);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
第三步:启动tomcat来访问:http://localhost:8080/Listenner/TestServlet
启动后:人为的stop tomcat服务器后
打开tomcat所在的work目录可以找到
钝化后的数据被保存到磁盘中
当再次启动tomcat服务器之后
磁盘中的数据再次被读到内存中
tomcat目录下的SESSIONS.ser文件就不在了,被活化了。