Session 的简单学习
发布日期:2021-05-07 19:41:38 浏览次数:21 分类:精选文章

本文共 1573 字,大约阅读时间需要 5 分钟。

文章目录

一、概念

服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中,用的是 HttpSession

(1)获取HttpSession对象:			HttpSession session = request.getSession();(2)使用HttpSession对象:			Object getAttribute(String name)  			void setAttribute(String name, Object value)			void removeAttribute(String name)

二、原理

Session 的实现是依赖于 Cookie 的

在这里插入图片描述
一次会话过程中之所以可以共享数据,原因就是使用的是同一个 Session,客户端和服务器之间通过给 Session 标记的 JSESSIONID 来识别同一个 Session。
当首次访问 session1,时,完成的set-cookie:

@WebServlet("/session1")public class Session2 extends HttpServlet {       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {           HttpSession session = request.getSession();        session.setAttribute("msg","hello session");    }

在这里插入图片描述

访问 session2时,可以看出,通过 JESSIONID 将同一次的会话联系了起来。
在这里插入图片描述

三、细节

(1)当客户端关闭后,服务器不关闭,两次获取session是否为同一个?

* 默认情况下:不是。* 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。	Cookie c = new Cookie("JSESSIONID",session.getId());	c.setMaxAge(60*60);	response.addCookie(c);

(2)客户端不关闭,服务器关闭后,两次获取的session是同一个吗?

* 不是同一个,但是要确保数据不丢失,tomcat自动完成以下工作* session的钝化:		* 在服务器正常关闭之前,将session对象系列化到硬盘上* session的活化:		* 在服务器启动后,将session文件转化为内存中的session对象即可。

这里 使用 Tomcat会自动给我们部署,但是需要注意使用开启和关闭都要正规操作,不使用了,不能直接叉掉

IDEA 则不能完成这个工作,每次启动Tomcat都会重新新建 work 目录,不会保存

在这里插入图片描述
(3)session什么时候被销毁?

* 服务器关闭* session对象调用invalidate() 。* session默认失效时间 30分钟,这个可以修改Tomcat 目录下的xml 文件				选择性配置修改					
30

在这里插入图片描述

四、session 的特点

(1)session用于存储一次会话的多次请求的数据,存在服务器端(2)session可以存储任意类型,任意大小的数据
session与Cookie的区别:	* session存储数据在服务器端,Cookie在客户端	* session没有数据大小限制,Cookie有	* session数据安全,Cookie相对于不安全
上一篇:验证码案例实现
下一篇:JSP 入门学习

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年03月31日 09时32分58秒