44session绑定解绑、钝化活化

BeanListener监听绑定或者解绑

HttpSessionActivationListener,Serializable 监听钝化活化

 Serializable接口拿来实现获取session里面的数据

就是说你硬化就是将session数据从内存放到转存到硬盘

而活化就是从你的硬盘里面的sesion文件数据读取出来

1.创建一个BeanaListener监听session类

 2.创建一个jsp页面来引用session看看第一次和第二次session绑定和解绑的地址有什么差别

首先:

因为服务器只给你客户分配一个sessionid

所以sessionid的值不会变

但是因为第二次是重新new 了新的session对象 ,因此对象的地址(this)就肯定和第一次不一样

 运行结果:

BeanListener

package org.student.listener;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

public class BeanListener  implements HttpSessionBindingListener{

    @Override
    public void valueBound(HttpSessionBindingEvent event) {
        System.out.println("绑定:Bean对象 (将Bean对象加入到session域) "+this+", session id:"+event.getSession().getId());
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
        System.out.println("解绑Bean对象:(将Bean对象从session域中移出)"+this+", session id:"+event.getSession().getId());
    }

}
 

binding.jsp

<%@page import="org.student.listener.BeanListener"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
    BeanListener bean=new BeanListener();
    session.setAttribute("bean", bean);//绑定
    
%>

</body>
</html>

1. E:\Tomcat\apache-tomcat-9.0.44\conf\context.xml配置 2.创建BeanListener2

 3.write.jsp

 4.read.jsp

运行结果:

先写write

关闭tomcat

再读read

read.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

从硬盘中读取session域中的对象(活化):<br/>
num:${sessionScope.bean.num }<br/>
user:${sessionScope.bean.user }<br/>


</body>
</html>

write.jsp

<%@page import="org.student.listener.BeanListener2"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
        <%
        
        BeanListener2 bean=new BeanListener2();
        bean.setNum(10);
        bean.setUser("sjd");
        session.setAttribute("bean", bean);
        
        %>
</body>
</html>

BeanListener2

package org.student.listener;

import java.io.Serializable;

import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;

public class BeanListener2  implements HttpSessionActivationListener,Serializable{
    private int num;
    private String user;
    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    //即将进行钝化之前Will 内存到硬盘
    @Override
    public void sessionWillPassivate(HttpSessionEvent se) {
    System.out.println("即将钝化之前,BeanListener2对象随着session钝化而钝化");
    }
    
    //在进行活化之后Did 硬盘到内存
    @Override
    public void sessionDidActivate(HttpSessionEvent se) {
    System.out.println("进行活化之后,BeanListener2对象随着session活化而活化");
    }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值