HttpSessionBindingListener 实现此接口类的类,不必在web.xml中进行配置。 实现此接口的类,通常是一个JavaBean,一个JavaBean通过实现此接口,可以感知自己是否添加到了Session中。或是感知自己是否从Session中移除。 示例:
public class Person implements HttpSessionBindingListener {
public void valueBound(HttpSessionBindingEvent arg0) {
System.err.println("我被添加到了Sesion中"+arg0.getName());
}
public void valueUnbound(HttpSessionBindingEvent arg0) {
System.err.println("我从Session中被移除了....");
}
}
//
HttpSessionActivationListener
实现此接口的JavaBean,可以感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)的过程。 如果需要同时保存Session中的JavaBean则JavaBean也要实现Serializable序列化接口。 实现此接口的JavaBean与HttpSessionBindingListener一样,不必配置到web.xml中。 要实现此功能,必须要先配置以下信息:
<Context path="/myProj" docBase="D:/programfiles/projects/MyProj/WebRoot"> <!-- 配置会话的持久化 --> <Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="true" maxActiveSessions="1" minIdleSwap="120" maxIdleSwap="180" maxIdleBackup="5" maxInactiveInterval="1800"> <Store className="org.apache.catalina.session.FileStore" directory=“保存目录"> </Store> </Manager> </Context>
第一步:书写一个JavaBean,并实现HttpSessionActivationListener接口如下:
第二步:JSP页面,判断是否存在Person,如果没有将Person放到Session中:
第三步:配置Tomcat的Server.xml文件或是将配置好的xml发布文件放到CATALIINA_HOME\conf\Catalina\localhost目录下:
第四步:测试
1:多次开启新的浏览器窗口,并记录SESSIONID。 2:使用shutdown.bat关闭tomcat应用。 3:观察指定的目录下是否存在*.session文件。 4:再次重新启动tomcat,并使用http://localhost:8080/project;jsessionid=xxxxx指定sessionid的方式访问服务器。 5:观察是否为关闭tomcat之前的同一个Session。 6:一般情况下,PersistentManager持久化Session与Cookie共同使用。 7:HttpSessionActivationListener只做为监听类,监听自己是否钝化或是活化。