JavaWeb---session活化与钝化
来源:互联网 发布:全球工业软件市场规模 编辑:程序博客网 时间:2024/04/29 06:05
会话的持久化:
本篇解决一个问题,就是当正在浏览页面的时候服务器突然关闭,浏览器不关闭,当再次开启服务器时还能够恢复关闭时的页面
HttpSessionActivationListener
实现此接口的JavaBean,可以感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)的过程。
如果需要同时保存Session中的JavaBean则JavaBean也要实现Serializable序列化接口。
实现此接口的JavaBean与HttpSessionBindingListener一样,不必配置到web.xml中。
要实现此功能,必须要先配置以下信息:
第一步:书写一个JavaBean,并实现HttpSessionActivationListener接口如下:
第二步:JSP页面,判断是否存在Person,如果没有将Person放到Session中:
第三步:配置Tomcat的Server.xml文件或是将配置好的xml发布文件放到CATALIINA_HOME\conf\Catalina\localhost目录下:
配置文件如下:
directory=“d:/a”是指Session文件保存的目录。
第四步:测试
1:多次开启新的浏览器窗口,并记录SESSIONID。
2:使用shutdown.bat关闭tomcat应用。
3:观察指定的目录下是否存在*.session文件。
4:再次重新启动tomcat,并使用http://localhost:8080/project;jsessionid=xxxxx指定sessionid的方式访问服务器(如果浏览器没关闭的话就不用带上jsessionid)。
5:观察是否为关闭tomcat之前的同一个Session。
6:一般情况下,PersistentManager持久化Session与Cookie共同使用。
7:HttpSessionActivationListener只做为监听类,监听自己是否钝化或是活化。
示例代码如下:
Person.java
package cn.hncu.domain;import java.io.Serializable;import javax.servlet.http.HttpSessionActivationListener;import javax.servlet.http.HttpSessionEvent;public class Person implements Serializable, HttpSessionActivationListener {private String name;public Person(String name) {this.name = name;}@Overridepublic void sessionDidActivate(HttpSessionEvent arg0) {System.out.println(this+"从硬盘读取并活化了");}@Overridepublic void sessionWillPassivate(HttpSessionEvent arg0) {System.out.println(this+"保存到硬盘");}@Overridepublic String toString() {return "Person [name=" + name + "]---"+super.toString();}}
index.jsp
<%@page import="java.text.SimpleDateFormat"%><%@ page language="java" import="java.util.*,cn.hncu.domain.Person" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body> <h2>演示session钝化与活化技术</h2> <% if (session.getAttribute("p")==null){ Person p=new Person(""+new Random().nextInt(100)); session.setAttribute("p", p); } System.out.println(session.getId()+"---"+session.getAttribute("p")); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date d=new Date(session.getCreationTime()); System.out.println(sdf.format(d)); %> </body></html>
<Context path="/sessionActivationWeb" docBase="D:/Workspaces/MyEclipseBlue2014/sessionActivationWeb/WebRoot"><Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="true"> <Store className="org.apache.catalina.session.FileStore" directory="d:/a"> </Store></Manager></Context>
然后关于浏览器访问,这里要说一下;就是在浏览器上的http://localhost:8080/的后面要加上的不是项目名,而是上面配置的xml文件的名字,我这里这个文件名是叫aa.xml,因此在访问的时候我输的是http://localhost:8080/aa,因此你可以将这个xml文件的文件名改为你的项目名。
此时关闭服务器:
d盘a目录下生成如下文件:
此时在其启动服务器,然后刷新浏览器(若浏览器已经关闭,访问时请带上上次访问的jsessionid):
输出信息如下:
对比一下第一次访问时的信息,发现完全一样的
- JavaWeb---session活化与钝化
- session钝化与活化
- session钝化与活化
- session的钝化与活化
- Session的活化与钝化
- javaEE之--------------session的活化与钝化
- session的钝化与活化技术
- session的钝化和活化
- session的活化和钝化
- 监听器 HttpSessionBindingListener ;HttpSessionActivationListener; session的活化与钝化
- Session的活化与钝化钝化和通过代码(Java)发送邮件(QQ,新浪)
- HttpSessionActivationListener钝化与活化监听器
- JavaWeb之Session的序列化和反序列化 && Session的活化和钝化
- JavaWeb之Session的序列化和反序列化 && Session的活化和钝化
- Servlet监听器/Session钝化和活化
- IDEA之Session的活化和钝化
- 对于session序列化跟session的钝化与活化的粗浅理解
- JavaWeb-Session钝化机制
- kaldi安装及运行测试例子
- qt platform plugin 'windows'
- 基于标准设计,遵从规范
- HDU 5867.Water problem【打表】【8月20】
- 微擎之关键字回复图文消息进入模块首页
- JavaWeb---session活化与钝化
- poj 1039 Pipe
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之九:Hibernate Session Helper类,用于Entity属性与表字段的操作...
- hadoop安装及其注意事项
- 单片机控制ws2812b
- C++拷贝构造函数详解
- java 延迟阻塞队列详解
- Android 最全颜色对应的颜色表
- java 不用内置函数开根号