日期:2014-05-18  浏览次数:20774 次

session疑问
最近在做用户登录,   为了防止异地重复登录
我把用户信息放入ServletContext中,   以此来判断
然后用HttpSessionBindingListener来处理非注销情况

现在遇到一个情况,   我用遨游的浏览器登录以后,   然后把该页面关闭,
另开一个页面,   期间浏览器没有关闭,   那么可以获得关闭页面的session,
但我若关闭整个浏览器,   再打开浏览器则不能再获得session.  
session是应用服务器根据每个连接分配的,
在同一浏览器多个网页明显都是一个session,
而多个浏览器却是不同.   而且最后一次获得的session会把前面的覆盖.
请问何解?

------解决方案--------------------
session的默认机制就是这样的
------解决方案--------------------
這個 'session ' 你可以理解被存在你的内存當中,儅瀏覽器被關閉時它也被釋放了。
再打開瀏覽器當然被分配新的session
------解决方案--------------------
楼上的好像说的有点问题吧
session是保存在服务器上的,客户端只有一个session ID,在同一浏览器中打开是因为浏览器记住了这个ID;所以再次打开能够登上去;
但是关闭浏览器后,就不知道ID了,所以无法登陆上去
------解决方案--------------------
我觉得这个问题应当属于进程和线程的问题
不管你是什么浏览器都是如此的
若你在当前IE窗口再重开一个页面此时用的是同一个进程只不过多开一个线程而已
当你再打开一次IE浏览器便会再增加一个进程
session存在于整个HTTP会话的生命周期内,同一个HTTP会话中的组建共享它
你所说的将用户信息存放于ServletContext中,这个实际上是application的作用范围
是在整个web应用的周期内
------解决方案--------------------
这就是进程和线程的问题,一个进程可以有很多个线程,SESSION存在于同一进程内,不能跨进程,这其实也是个安全保护作用。
你可以把IE看作是个浏览网络内容的软件(其实它就是个软件),和其它软件一样,如QQ,你第一次登录后再关掉,第二次再登录还是要密码的,可以保存密码?IE中也一样可以用COOKIE来保存密码,