servlet session持久化
1、 session持久化是什么? web服务器把 session中存储的属性存储到本地磁盘或数据库中;
2、为什么需要持久化? 因为 session是服务器维护会话状态的对象,即便客户端关闭连接或客户端长时间没有访问,服务器还依然存储了客户端的访问数据,浪费了服务器资源;
为了提高服务器内存利用率,其会将暂时不活动但未超时的 session对象 存储到本地或数据库(持久化或序列化); 一旦服务器想要恢复 之前某客户的访问状态时,就可以从本地或数据库恢复他们到内存(反序列化);
3、session持久化怎么做 ?
看个荔枝(代码转自张孝祥):
// servlet 持久化
public class PersistentServlet extends HttpServlet
{public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{response.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();HttpSession session = request.getSession();Student1 student1 = (Student1)session.getAttribute("student1");if(student1 == null){student1 = new Student1();student1.setValue(35);session.setAttribute("student1",student1);out.println("将student1保存到了Session中!<br>");}else{out.println("读取student1:" + student1.getValue() + "<br>");}Student2 student2 = (Student2)session.getAttribute("student2");if(student2 == null){student2 = new Student2();student2.setValue(33);session.setAttribute("student2",student2);out.println("将student2保存到了Session中!<br>");}else{out.println("读取student2:" + student2.getValue() + "<br>");}}
}
// 没有实现序列化接口 Serializable
public class Student1
{private int value = 0;public void setValue(int value){this.value = value;}public int getValue(){return value;}
}// 实现序列化接口 Serializable
public class Student2 implements Serializable
{private int value = 0;public void setValue(int value){this.value = value;}public int getValue(){return value;}
}
访问步骤;
1、第一次访问 , 因为session 没有会话信息,所以先保存;
2、点击刷新; 读取第1次访问时,存储的会话信息;
3、这时关闭 tomcat 服务器; tomcat 会把session中的属性从内容持久化到本地文件, 路径 tomcat\work\Catalina\localhost\myweb2
4、再次启动 tomcat 服务器, 再次访问; 这时由于 student1 没有实现Serializable 序列化接口,所以该对象没有被持久化到本地;而 student2 实现了Serializable接口,其信息被持久化到本地,即可以恢复上一次会话;
servlet session持久化相关推荐
- java session 持久化_自定义实现session持久化
自定义实现session持久化 使用场景 对于有登录校验的网站,tomcat 重启之后,刷新页面又得重新登录,影响用户体验. 原因: tomcat 的session 在内存中,tomcat重启之后,内 ...
- shiro 的session持久化
对于分布式系统,一般都牵扯到Session共享问题, 而想实现Session共享,就要实现Session的持久化操作,即是将内存中的Session持久化至缓存数据库. SessionDAO是Shiro ...
- 【Session】Tomcat中Session持久化到文件系统或数据库
参考的优秀文章 Tomcat Session 持久化 Package org.apache.catalina.session 最近同事在做Session外置的功能,我对Session持久化.共享也不太 ...
- 基于shiro实现session持久化和分布式共享
前言 本文写下session持久化和分布式共享 基于shiro框架对session的管理机制来实现 必要性 一直处于登陆状态:你登陆微信 不可能三天两头就让你重新登陆吧?而是一直处于登陆状态 除非主动 ...
- Servlet Session 跟踪
什么是session呢?了解session之前,先要简单了解http协议. http协议是面向无连接的协议,一次请求,一次操作,然后就结束了,是没有状态的.就是说,用户请求一次,server响应一次, ...
- Tomcat7 session 持久化关闭
Tomcat7 session 持久化关闭 tomcat 7默认开启session持久化功能,这样当你的tomcat重启之后,会自动重新加载session,这样当tomcat重启了保存在session ...
- Flask的会话技术:cookie、session以及session持久化问题
文章目录 一.会话技术 1.介绍 2.详细过程 二.Cookie 1.Cookie介绍 2.Cookie登陆使用 三.Session 1.Session介绍 2.Session登陆使用 3.Sessi ...
- java session持久化_Session的生命周期和持久化
![](https://box.kancloud.cn/44537ef796e6a49c6421fd9186276df6_468x371.png) web.xml中配置,session的计算是从停止操 ...
- servlet session listener
HttpSessionListener-创建与销毁 //@WebListener servlet3.0支持注解 public class HttpSessionListenerDemo impleme ...
最新文章
- 【HDOJ】3487 Play with Chain
- 实用的bit 位操作
- java弧线_数据可视化API之弧线图实现
- 替换k个字符后最长重复子串
- 数据结构入门学习笔记-1
- 652. 寻找重复的子树
- 重学TCP协议(12)SO_REUSEADDR、SO_REUSEPORT、SO_LINGER
- c语言截图代码,截图代码 哪位大神帮我找一下错,截出来的图是这样子的
- PHP垃圾回收机制理解
- Maven : JsonMappingException: Incompatible Jackson version: 2.9.5
- java swing 删除事件_java swing清除事件队列
- RabbitMq之简单队列
- 【JVM学习笔记一】JVM内存分布
- The requested resource is not available. 原因,成功解决
- PHP版三合一收款码_附50多款模板源码
- RestTemplate.exchange各种用法(包括泛型等 --全)
- 正向有功正向无功_电表的正向有功和反向无功的详细解读
- HashMap源码学习——初探
- 关于VS2017许可证过期问题
- 网页二维码生成器纯js代码带logo图纯前端合成
热门文章
- [Wannafly挑战赛2D-Delete]最短路
- Almost Sorted Array HDU - 5532
- 【网络流专练一】UVA五题(UVA12125,UVA11082,UVA10983,UVA1306,UVA10735)
- 【CF1307F】Cow and Vacation(并查集+lca倍增)
- P1712-[NOI2016]区间【线段树,尺取法】
- YbtOJ#20236-[冲刺NOIP2020模拟赛Day9]红点蓝点【线段树,堆】
- P4552-[Poetize6]IncDec Sequence【差分】
- 欢乐纪中A组赛【2019.8.17】
- jzoj1252,P5194-天平【dfs,set】
- P2053 SCOI2007 修车,费用流好题