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活化而活化");
}
}