java web开发中对于session生命周期的新认识

  • Post author:
  • Post category:java






对于session的生命周期,很久以前以为是,当浏览器关闭后,会话会实效。当时也做过实验,确实没有发现哪里有问题,这是真滴尴尬。直到最近对会议的使用加深,才发现其中的一些奥妙。







这里先说session的生命周期,除了ie浏览器在关闭的时候会销毁session,其他浏览器都不会。然后,tomcat对session都会默认设置一个生命周期长度,这个我们是可以改变的。而生命周期是指,当session与服务器失去交互一定时间之后,才会失效。所以有两点。首先,在除了ie浏览器之外的其他,在关闭浏览器后,session不会立即失效,需要等到生命周期长度之后才会失效。原因很简单,关闭浏览器后,我们无法控制这个session,也就是说这个session一直处于和服务器无交互状态,需要等到生命周期到了才会失效。其次,需要理解session与服务器没有交互这个概念。这个不仅仅是指关闭服务器。而是指咱们的web没有对服务器的访问。我们将web放着不动,生命周期长度过去后,session一样会失效。





再说我们为什么我之前的实验没有验证出我对session的错误理解。在这里需要提一下,每次关闭浏览器后,我们会失去对当前session的控制。在重开浏览器后,会重新创建一个session。也就是,此session非彼session。这样就很容易理解了。实验时,我总是关闭浏览器后在尝试获得之前放入session的键值对,然后通过没有获取到预计中的value,判断session失效了,进而判断关闭浏览器后session失效的荒唐结论。事实是,当时获得到的session不是之前的session,这样肯定一定无疑获取不到对应的value。





由此我也明白了,事实或真相,总比你想的深的更多。也许我这篇blog中也存在理解上的错误,但是人总是在学习的,只能通过不断的学习,来发现并纠正自己。













版权声明:本文为qq_33961348原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。