java中关闭浏览器后清除session_Java Web 浏览器关闭后Session就会被销毁吗?

浏览器关闭后Session就会被销毁吗?

Session是JSP的九大内置对象(也称为隐含对象)中的一个,用于保存当前用户的状态信息,初学者可能认为Session的生命周期是从打开一个浏览器发送请求到关闭浏览器,这是错误的。

Session的运行机制

当用户第一次访问一个支持Session的Web应用时,会开启一个新的Session会话。当用户浏览这个Web应用的不同网页时,始终处于该Session中。具体而言:

1 当开启一个新的Session会话时,Servlet容器会创建一个HttpSession对象,该HttpSession对象可以存放用户状态的信息。

2 Servlet容器为每个HttpSession对象分配一个唯一标识符即Session ID,把它作为一种Cookie保存在客户端即浏览器中。

3 用户每次发送HTTP请求后,Servlet容器会从HttpServletRequest对象中取出Session ID,然后根据这个Session ID找到对应的HttpSession对象,从而获取用户的状态信息。

结束Session生命周期的两种方式:

1 Session.invalidate()

用于强制注销用户。

2 自动失效

当用户和服务器的交互时间超过默认时间后,Session会失效。

关闭浏览器后浏览器不会向服务器发送请求来关闭Session,Session不会被销毁。虽然可以在所有的客户端页面使用JS的window.onclose来监听浏览器的关闭动作,然后向服务器发送一个请求来关闭Session,但是不推荐这种做法。最正常的处理方式是它超时后自动被销毁。关闭浏览器后存在浏览器的Cookie就不存在了。Cookie有两种,分别存在浏览器的进程和硬盘。而Session的Cookie存在浏览器的进程中,当重新打开浏览器时,之前的Cookie中存放的Session ID已经不存在了,服务器从HttpServletRequest对象中没有找到Session ID,服务器会再发送一个新的存有Session ID的Cookie到浏览器中,即开启了一个新的会话,而服务器上原来的Session超时后会自动被销毁。其中,不同浏览器开启的是不同的Session会话。

参考资料

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值