一、Session原理分析
Session是基于Cookie实现的

- 当客户端第一次请求会话对象时,服务器会创建一个 Session 对象,并为该 Session 对象分配一个唯一的 SessionID (用来标识这个 Session 对象);
- 服务器将 SessionID 以 Cookie(Cookie 名称为:“ JSESSIONID ”,值为 SessionID 的值,如
Set-Cookie:JESSIONID=10)的形式发送给客户端浏览器; - 客户端浏览器再次发送 HTTP 请求时,会将携带 SessionID 的 Cookie (如
cookie: JESSIONID=10)随请求一起发送给服务器; - 服务器从请求中读取 SessionID,然后根据 SessionID 找到对应的 Session 对象。
- 在
同一次会话中,多次请求获取的是同一个Session对象
注意:
- 流程中的 Cookie 是容器自动生成的,它的 maxAge 属性取值为 -1,表示仅当前浏览器有效。
- 浏览器关闭时,对应的 Session 并没有失效,但此时与此 Session 对应的 Cookie 已失效,导致浏览器无法再通过 Cookie 获取服务器端的 Session 对象。
- 同一浏览器的不同窗口共享同一 Session 对象,但不同浏览器窗口之间不能共享 Session 对象。

本文详细剖析了Session的工作原理,包括基于Cookie的SessionID传递,以及Session的钝化、活化和销毁机制。同时,探讨了Session的使用细节,如如何设置过期时间和生命周期,强调了Session在不同浏览器窗口间的共享特性,并指出静态资源访问不会创建Session对象。
最低0.47元/天 解锁文章
714

被折叠的 条评论
为什么被折叠?



