ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

session 对象的绑定、解绑和钝化、活化

2020-02-21 14:05:14  阅读:497  来源: 互联网

标签:钝化 name void pwd session 解绑 public String


监听对象与session的绑定与解绑

接口:HttpSessionBindingListener

监听一个类实例何时被添加到session域中,何时移除了session域。

此监听器不用配置web.xml

/**
 * 监听session属性对象的绑定与解绑
 * @author 1
 *
 */
public class Bean implements HttpSessionBindingListener {
	private String name;
	private String pwd;
	
	public Bean(String name,String pwd) {
		this.name = name;
		this.pwd= pwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	
	@Override
	public void valueBound(HttpSessionBindingEvent event) {
		System.out.println("session绑定对象:"+event.getName());
	}
	@Override
	public void valueUnbound(HttpSessionBindingEvent event) {
		System.out.println("session解绑对象:"+event.getName());
	}
	
}

当调用session.setAttribute(“name”,bean);时,自动调用valueBound提示对象与session绑定
当调用session.remove()时自动调用valueUnbound提示对象以与session解绑。

钝化、活化

关于钝化活化可参考:https://blog.csdn.net/codejas/article/details/79041006

public class Bean2 implements HttpSessionActivationListener,Serializable{
	private String name;
	private String pwd;
	
	public Bean2(String name,String pwd) {
		this.name = name;
		this.pwd= pwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	/**
	 * 监听活化之后
	 */
	@Override
	public void sessionDidActivate(HttpSessionEvent se) {
		System.out.println("对象已经活化");
	}
	/**
	 * 监听钝化之前
	 */
	@Override
	public void sessionWillPassivate(HttpSessionEvent se) {
		System.out.println("对象钝化");
	}

}

测试:在index.jsp中将两个对象绑定


	<%
		Bean bean = new Bean("bean","123");
		session.setAttribute("bean", bean);
		//session.removeAttribute("bean");
		
		Bean2 bean2 = new Bean2("bean2","321");
		session.setAttribute("bean2", bean2);
		
	%>

关闭服务器后,访问session.jsp:

<body>
	bean:${sessionScope.bean.name };<br>
	bean2:${sessionScope.bean2.name };
</body>

运行结果:
在这里插入图片描述

附:配置钝化的方法

配置tomcat安装目录/conf/context.xml

<!-- 通过配置实现钝化和活化
    className="org.apache.catalina.session.PersistentManager"  固定写法
    maxIdleSwap(单位:秒): 最大空闲时间,超过这个时限还未使用session,则会自动钝化
    FileStore:通过该类具体实现钝化操作
    directory: 钝化所在路径 相对路径(tomcat目录所在路径/work/Catalina/localhost/项目名)
     -->
    <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="60">
        <Store  className="org.apache.catalina.session.FileStore" directory="store_sess"/>
    </Manager>
March. 发布了20 篇原创文章 · 获赞 0 · 访问量 473 私信 关注

标签:钝化,name,void,pwd,session,解绑,public,String
来源: https://blog.csdn.net/qq_43635212/article/details/104426539

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有