jsp会话session在浏览器关闭后没销毁却访问不到

浏览器关闭后,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标识。

 

posted @ 2018-11-09 10:53  假程序猿  阅读(633)  评论(0)    收藏  举报