jsp中session的绑定和解绑,钝化和活化

it2023-05-05  68

                            jsp中session的绑定和解绑,钝化和活化      

        当服务器关闭时,将session存入到硬盘中称为钝化,启动服务器将session取出,称为活化。

 钝化:内存-->硬盘

活化:硬盘-->内存

session对象的四种状态: 个别监听器不需要配置web.xml

HttpSessionBindingListener

HttpSessionActivationListener

监听session对象的绑定和解绑:HttpSessionBindingListener

a.session.setAttribute("a","xx")  将对象a【绑定】在session中 

b.session.removeAttribute("a")讲对象a从session中【解绑】

建立一个HttpBindingListener 类继承HttpSessionBindingListener实现邦定和解绑的监听

其中 this表示的就是绑定的setAttribute("a","xx")里面的a,

arg0可以用它获取到session

 

package Listener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; public class HttpBindingListener implements HttpSessionBindingListener{ @Override public void valueBound(HttpSessionBindingEvent arg0) { //绑定 System.out.println("绑定:bean对象(将bean对象加入到session域),绑定的对象"+this+"sessionId"+arg0.getSession().getId()); } @Override public void valueUnbound(HttpSessionBindingEvent arg0) { // 解绑 System.out.println("解绑bean对象"+this+"sessionId"+arg0.getSession().getId()); } }

建立一个测试类

<%@page import="Listener.HttpBindingListener"%> <%@ 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> <% HttpBindingListener bean = new HttpBindingListener(); session.setAttribute("bean", bean);// %> </body> </html>

可以看到控制台显示session的绑定和解绑过程

刷新之后的第一个session会被解绑,因为重新new了一个相同的session对象a

导致第一session对象被覆盖并解绑

监听session对象的钝化和活化:HttpSessionActivationListener

c.钝化

d.活化

 

 

最新回复(0)