会话的持久化:

本篇解决一个问题,就是当正在浏览页面的时候服务器突然关闭,浏览器不关闭,当再次开启服务器时还能够恢复关闭时的页面

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服务器后

JavaWeb---session活化与钝化

打开tomcat所在的work目录可以找到

JavaWeb---session活化与钝化

钝化后的数据被保存到磁盘中

当再次启动tomcat服务器之后

JavaWeb---session活化与钝化

磁盘中的数据再次被读到内存中

JavaWeb---session活化与钝化

tomcat目录下的SESSIONS.ser文件就不在了,被活化了。

相关文章:

  • 2021-08-30
  • 2021-09-23
  • 2021-11-04
  • 2022-02-04
  • 2021-06-29
  • 2021-06-18
  • 2022-12-23
猜你喜欢
  • 2021-11-01
  • 2022-02-07
  • 2021-07-15
  • 2021-05-15
  • 2022-12-23
  • 2022-02-09
相关资源
相似解决方案