到底创建了几个Session

简介: 问:浏览器访问一个站点,产生一个session,接着进行以下操作:1、在同一个浏览器新打开一个tab卡,访问同一站点,此时几个session2、将新打开的tab卡拖拽出来,成为两个浏览器的时候,创建了几个session3、换一个浏览器,访问同一个站点,此时几个session4、HttpSession、HttpServletRequest.

问:浏览器访问一个站点,产生一个session,接着进行以下操作:
1、在同一个浏览器新打开一个tab卡,访问同一站点,此时几个session
2、将新打开的tab卡拖拽出来,成为两个浏览器的时候,创建了几个session
3、换一个浏览器,访问同一个站点,此时几个session
4、HttpSession、HttpServletRequest.getSession()、HttpServletRequest.getSession(true)、HttpServletRequest.getSession(false)是不是同一个session?

先看产生的第一个session

访问本地的tomcat,将第一次的sessionId存如session,可以看到四个sessionId相同。

img_76582c8fded94c7fd1127fa7ead9e51e.png

新打开tab,比较两个sessionId

img_f62c395a9af0d378fce6892699512c8a.png

发现两个tab卡的sessionId也是相同的

拖拽出来之后

发现两个sessionId依然相同

img_661f0ebeb416ed63a01f3d57c7714589.png

换FF再打开

终于和之前的不一样了。

img_06d4b9fc213e03019e0bbed4eb7c9bb4.png

总结

1.对于同一个浏览器,在不清除cookie、缓存、关闭浏览器的前提下,如果没到失效时间,session都是同一个
2.拖拽出来之后,session依然是同一个
3.换一个浏览器,session改变
4.HttpSession、HttpServletRequest.getSession()、HttpServletRequest.getSession(true)、HttpServletRequest.getSession(false)获取到的是同一个session

题外话

session存在于服务端,由于http是无状态的,服务端无法区别请求由哪个客户端发送,最终还是依赖cookie,每次发送请求携带一个JSESSIONID,即服务端获取的sessionId,唯一标识一个客户端请求。

img_b777415916eb988e6c46796d427f8675.png

目录
相关文章
|
1月前
|
存储 开发者
Session 使用详解
Session 使用详解
29 1
|
6月前
|
存储 安全 NoSQL
97 # session
97 # session
18 0
|
4月前
|
存储
|
10月前
|
存储 开发框架 安全
session
session
91 0
|
10月前
|
存储 应用服务中间件
Session浅谈
Session浅谈
48 0
|
存储 Java 开发者
session对象
session对象
85 0
|
关系型数据库 Linux