session 的钝化和活化 | 学习笔记

简介: 快速学习 session 的钝化和活化。

开发者学堂课程【Servlet 入门:session 的钝化和活化】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/38/detail/892


session 的钝化和活化


内容介绍

一、什么是 session 的钝化和活化

二、示例步骤

 

 

一、什么是 session 的钝化和活化

假设我们在淘宝中用户过多的时候,虽然 session 没有下限,但 session 的数量就会不断增多。

之后就会导致内存无法承受,此时就会有一些 session 长时间都没有活动。

服务器启动时就会将这些很久没有活动的 session 放到硬盘上,让内存给空出来。

就会使得很多的session被保存到硬盘上以此来空出内存。而即便之后需要再次访问 ession,它就会再次从硬盘中将 session给放回来使用。这样用户就不会感觉到自己掉线了。

这个过程就是 session 的钝化和活化。

而钝化和活化最终都是把 session 保存到硬盘中,再从硬盘中回到内存中。

但是他们发生的时间点不一样。一个是关闭和启动服务器,一个是没有关闭和启动服务器就完成了。

1.png

注意,因为钝化和活化 session,其实就是使用序列化和反序列化技术把 session 从内存保存到硬盘,和把 session从硬盘加载到内存。

这说明如果 Person 类没有实现 Serializable, 接口,那么当 session 钝化时就不会钝化Person,而是把 Person session 中移除再钝化!这也说明 session 活化后, session 中就不在有 Person 对象了。

 

二、示例步骤

先不管 HittpSessionActivationListener 监听器接口,先来配置 Tomcat 钝化 session 的参数,把 下面配嚣文件放到 tomcatlconflcatalinaVocalhost目录下!文件名称为项目名称。

"org.apache.catalina.session.PresistentManger"(maxIdl9swap="1")[11]

"org.apache.catalina.session.FileStore"(directory="mysession")/>[12]

访问项目的 index.jsp 页面,这会使 Tomcat 创建 Session 对象,然后等待一分钟

Tomcat\work\Catalina\localhost\istenermysession.目录下是否会产生文件,如果产生了,说明钝化 session 的配置成功了,可以开始下一步了。

打开 context.xml 把代码添加到35行代码进去,在此处表示对所有代码都生效。

1.png2.png接下来,我们启动。使用 a.jsp 保存数据。b.jsp 输出数据。1.png2.png

之后再打开 mysession 文件夹后耐心等待一段时间后就可以看见以一个 session 一个存储的形式展现出来。

文件名是 sessionID。扩展名是 .session 。跟刚才的序列化相比,序列化是sessions.ser 但现在是 SessinonID 为名称。1.png

显示出来的效果如图为已经钝化的 session ,但是即便将其活化之后该文件也不会消失。并且它所占的内存极小,且不会被加载文件。

2.png

1.png然后我们再打开一个窗口试一下会发现,几乎根本感觉不到 session 的钝化和活化。

钝化就是将其保存到上面的文件中,活化就是将其加载出来。1.png

[注:6]如果 session 1分钟内没有使用那么 Tomcat 就会钝化它


session 序列化到 Tomcat\work\Catalina\Localhost\listener\mysession 目录下

相关文章
|
Java 开发工具 Maven
svn篇2:idea中使用svn
svn篇2:idea中使用svn
7057 0
|
Java 测试技术 容器
Spring框架-ObjectProvider更加宽泛的依赖注入
从上面的过程中我们可以看出,但Spring中某个Bean的依赖类型为ObjectProvider时,我们不需要提供一个ObjectProvider类型的Bean到容器中,只需要提供一个T类型的Bean到容器中,容器会自动将其包装成一个ObjectProvider,然后注入到依赖中
430 0
|
6月前
|
前端开发 Java 微服务
2025 年全网超全 Java 从入门到精通学习路线指南
这是一份全面的Java学习路线图,涵盖从基础到进阶的知识体系。基础阶段包括环境搭建、语法学习与面向对象编程;进阶阶段深入数据结构、多线程、JVM原理及泛型集合;框架阶段掌握Spring、MyBatis等工具;数据库阶段学习SQL、MySQL及Redis;前端技术涉及HTML、CSS与Vue;分布式阶段探讨微服务架构、Docker与Kubernetes;最后通过企业级项目实战提升性能优化与代码重构能力。资源地址:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
1261 7
|
7月前
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
480 27
|
监控 安全 Linux
IT知识百科:什么是黑洞路由?
【7月更文挑战第10天】
1302 5
IT知识百科:什么是黑洞路由?
|
机器人 Java 编译器
2024年睿抗机器人开发者大赛(RAICOM)CAIP-编程技能赛-本科组国赛
该文章是关于2024年睿抗机器人开发者大赛(RAICOM)CAIP-编程技能赛的介绍。
|
开发者 Docker 微服务
利用Docker Compose优化微服务架构
在微服务架构中,Docker Compose提供了一种简便有效的方法来定义和运行多容器Docker应用程序,通过YAML文件配置服务、网络和卷,实现一键创建和启动。这不仅确保了开发、测试和生产环境的一致性,还简化了团队协作和维护工作,大幅提升了开发效率。本文将详细介绍Doker Compose的核心优势、基本使用方法及高级功能,帮助你更好地管理和优化微服务架构。
|
存储 人工智能 小程序
比赛须知【2024 年睿抗机器人开发者大赛CAIP-编程技能赛(国赛)】
该文章是关于2024年睿抗机器人开发者大赛CAIP-编程技能赛(国赛)的参赛通知,强调了比赛时间、阅读比赛须知的重要性,并列举了多项比赛期间禁止的行为以确保比赛的公平性。
 比赛须知【2024 年睿抗机器人开发者大赛CAIP-编程技能赛(国赛)】
|
前端开发 Java 数据库连接
Spring6(一):入门案例
Spring6(一):入门案例
220 0
|
存储 算法 安全
cryptography Python代码示例
cryptography Python代码示例