关于Session生命周期的问题

huguang 2006-06-13 05:25:36
今天看飞思科技,孙卫琴编著的Tomcat与Java Web开发技术详解。
其中107页关于Session生命周期的问题,
书中讲:
以下情况,Session结束生命周期,Servlet容器将Session所占资源释放:
1.客户端关闭浏览器
2.Session过期
3.服务器端调用了HttpSession的invalidate()方法。

对第一条不能理解!
因为按我的理解本身http协议是无状态的,服务器端根本不能确定客户端什么时候关闭的浏览器!怎么释放?我觉得就算客户端关闭了浏览器,服务器端也是要等到Session过期才会释放吧?!!

请明白人给解释一下!谢谢
...全文
2209 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
m_ingming 2010-05-31
  • 打赏
  • 举报
回复
我个人是这样理解的啊!仅供参考 !
m_ingming 2010-05-31
  • 打赏
  • 举报
回复
客户端请求获得session一直保存在网页的内存中的已关闭ie就是释放掉那些session的信息!
当Request。getSession()服务器会重新分配session
chenhaiyangxp 2007-02-06
  • 打赏
  • 举报
回复
我想问问,Session的生命周期是从创建时算起还是从最后一次使用算起阿。
ttaallkk1 2006-06-14
  • 打赏
  • 举报
回复
session其实就是一个特殊的cookie,
打开了浏览器后,
这个特殊的cookie就会保存在web服务器的硬盘上
并且浏览器和服务器一直在进行间断性的http通信,
当服务器侦测到浏览器关闭后
服务器端调用了HttpSession的invalidate()方法,
并且删除硬盘上的cookie。
有的不删除,为什么你重新登陆一个web网站,她知道你的个人爱好,因为她还保存你的cookie。
yote 2006-06-13
  • 打赏
  • 举报
回复
我当时读到这的感觉是客户端关闭浏览器后也不是马上就释放session,而是等一段时间而这段时间刚好可以达到让session过期,从而达到释放的目的,不然为什么还要有那个invalidate()方法,直接关浏览器不就完了
huguang 2006-06-13
  • 打赏
  • 举报
回复
对,关键是服务器如何知道用户关闭了浏览器!这个问题好像没什么好的解决办法!否则很多问题都会简单的多了!
kevinliuu 2006-06-13
  • 打赏
  • 举报
回复
回复人:ttaallkk1(小昊) ( 二级(初级)) 信誉:100 2006-06-13 17:31:00 得分:0
?
楼主聪明啊!
你说的没错啊
关闭浏览器并没有马上过期.
过期的关键是 服务器端调用了HttpSession的invalidate()方法。

当时关闭浏览器后,服务器一般会马上调用这个方法。
~~~~~~~~~~~~~~~~~~~~~~~~

人家孙mm说得也没错啊。
Servlet容器将Session所占资源释放。她是说将,而不是说立刻!

楼主读书真仔细!



=====

关键是服务器如何知道用户关闭了浏览器
harston 2006-06-13
  • 打赏
  • 举报
回复
呵呵,楼主能考虑到这个问题,说明对这些东西已经有了深入地了解了
ttaallkk1 2006-06-13
  • 打赏
  • 举报
回复
楼主聪明啊!
你说的没错啊
关闭浏览器并没有马上过期.
过期的关键是 服务器端调用了HttpSession的invalidate()方法。

当时关闭浏览器后,服务器一般会马上调用这个方法。

人家孙mm说得也没错啊。
Servlet容器将Session所占资源释放。她是说将,而不是说立刻!

楼主读书真仔细!
supergoalcn 2006-06-13
  • 打赏
  • 举报
回复
我觉得就算客户端关闭了浏览器,服务器端也是要等到Session过期才会释放吧?!!

你的理解正确。“客户端关闭浏览器”与“Session过期”既非充分又非必要。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧