session
内存 -->硬盘 钝化(持久化)
硬盘–>内存 活化()
1)session对象的四种状态
HttpSessionBindingListener监听session对象的绑定和解绑
a.session.setAttribute("hobby","play basketball");绑定(将对象a 绑定到session中)
b.session.removeAttribute("hobby");解绑
HttpSessionActivationListener监听session对象的钝化和活化
c.钝化
d.活化
2)绑定解绑
package student.listener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
public class BeanListener implements HttpSessionBindingListener {
@Override
public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
System.out.println("绑定" + this + ",sessionId:" + httpSessionBindingEvent.getSession().getId());
}
//上面的this代表 session.setAttribute("bean",bean);里面的key
//HttpSessionBindingEvent里面储存着绑定着对象的session对象
@Override
public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
//this是解绑的对象
System.out.println("解绑"+this+"sessionId:"+httpSessionBindingEvent.getSession().getId());
}
}
<%
BeanListener bean = new BeanListener();
//绑定
session.setAttribute("bean",bean);
//这里每刷新一次,bean就会被覆盖一次
%>
分析打印结果
绑定student.listener.BeanListener@422dec60,sessionId:4FAC85B830CFF3FACC1CFBD165970E96
绑定student.listener.BeanListener@6f197bd5,sessionId:4FAC85B830CFF3FACC1CFBD165970E96
解绑student.listener.BeanListener@422dec60sessionId:4FAC85B830CFF3FACC1CFBD165970E96
绑定student.listener.BeanListener@fbbc04f,sessionId:4FAC85B830CFF3FACC1CFBD165970E96
解绑student.listener.BeanListener@6f197bd5sessionId:4FAC85B830CFF3FACC1CFBD165970E96