jsp会话session在浏览器关闭后没销毁却访问不到
浏览器关闭后,Session会话结束了么?
其实是没有。
当用户第一次访问Web应用中支持Session的某个网页时,就会开始一个新的Session,
那么接下来当用户浏览这个Web应用的不同网页时,始终处于一个Session中
让Session结束生命周期,有以下两种办法:
一个是Session.invalidate()方法,不过这个方法在实际的开发中,并不推荐,可能在强制注销用户的时候会使用;
一个是当前用户和服务器的交互时间超过默认时间后,Session会失效(默认30分钟)
没销毁,为什么当我们关闭浏览器后,就再也访问不到之前的session了呢?
补充:Cookie的两种类型
简单来说服务端session没销毁,但是客户端保持的进程cookie(即jsessionId标识)被销毁了
其实之前的Session一直都在服务器端,而当我们关闭浏览器时,
此时的Cookie是存在于浏览器的进程中的,当浏览器关闭时,Cookie也就不存在了。
其实Cookie有两种:(由过期时间属性决定)
一种是存在于浏览器的进程中;(临时cookie)
一种是存在于硬盘上(永久cookie)
而session的Cookie是存在于浏览器的进程中,那么这种Cookie我们称为会话Cookie,
当我们重新打开浏览器窗口时,之前的Cookie中存放的Sessionid已经不存在了,
此时服务器从HttpServletRequest对象中没有检查到sessionid,
服务器会再发送一个新的存有Sessionid的Cookie到客户端的浏览器中,
此时对应的是一个新的会话,而服务器上原先的session等到它的默认时间到之后,便会自动销毁。
同时打开多个相同浏览器访问页面,是同一个session
ps:相同浏览器为了性能可能合并成一个进程,具有相同的cookie标识。

浙公网安备 33010602011771号