セッション・オブジェクト、およびパッシベーションアンバンドリング活性化結合

リスナーはバインドと結ばソリューションセッションオブジェクト

インターフェース:HttpSessionBindingListenerを

クラスインスタンスのリスニングセッションがドメイン、ドメインのセッションに追加されたときに削除する場合。

このリスナーは、configureの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());
	}
	
}

自動着信のvalueBoundが結合セッションが表示されたら、あなたはにsession.setAttribute(「名前」、豆)を呼び出すと
、自動的に解session.removeを呼び出すときに、セッションを結びつけるためにvalueUnboundプロンプトオブジェクト()を呼び出します。

パッシブ活性化

活性化への不動態化は、リファレンスがあります。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>
公開された20元の記事 ウォンの賞賛0 ビュー468

おすすめ

転載: blog.csdn.net/qq_43635212/article/details/104426539