HttpSession会话管理原理

尝试运行HttpServletRequest的getSession()时,Web容器会创建HttpSession对象,关键在于每个HttpSession对象都会有个特殊的ID,称为Session ID,你可以执行HttpSession的getId()来取得Session ID。这个Session ID默认会使用Cookie存放在浏览器中。

每一个HttpSession各有特殊的Session ID,当浏览器请求应用程序时,会将Cookie中存放的Session ID一并发送给应用程序,Web容器会根据Session ID来找出对应的HttpSession对象,这样就可以取得各浏览器的会话数据。

所以使用HttpSession来进行会话管理时,设定为属性的对象是存储在服务器端,而Session ID默认使用Cookie存放于浏览器端。Web容器存储Session ID的Cookie“默认”为关闭浏览器就失效,所以重新启动浏览器请求应用程序时,通过getSession()取得的是新的HttpSession对象。

ServletAPI中可以存放属性的三个地方:

HttpServletRequest、HttpSession和ServletContext

默认在关闭浏览器前,取得的HttpSession都是相同的实例。如果想在此次会话期间,直接让目前的HttpSession失效,可以执行HttpSession的invalidate()方法。一个使用的时机就是实现注销机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值