リスナーはバインドと結ばソリューションセッションオブジェクト
インターフェース: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>