我现在有一个项目,在login.jsp提交登陆请求后 用request.getSession() 获取当前请求的session 发现 前后两个 session完全一样,包括sessionid和里面的其他值,角色 很奇怪。    就是我先登录一个用户,查看session对象,然后再登陆一个用户,发现这个session的id与前一个id一摸一样,然后我再去跟踪第一个session,发现里面的值都是第二个用户的信息,我觉得在进入login.jsp之后 这个session就已经是一样的了。    我在login.jsp页面里加上 session.invalidate(); 之后发现第二个用户的session确实换成了一个新的,但是第一个用户的session却被销毁了,也就是说第二个用户进入到login.jsp页面之后执行了session.invalidate(),销毁了第一个用户的session为什么这么奇怪??    哪位高手可以解释?

解决方案 »

  1.   

    从你的现象描述,似乎不应该是session问题,从客户端找一下原因,看看是不是浏览器的问题(一般支持多标签页的浏览器是共享session的,例如myie),或换用不同的机器测试一下
      

  2.   

    同一个机器 开两个ie,也就是2个进程, 也会这样么?   我只知道 同一个ie里面打开两个选项卡 session会是一样的
      

  3.   

    打开两个IEsesion应该不会是同一个
      

  4.   

    是不是一个我觉得没必要深究了,没必要怀疑session,用就是了。如果非要搞清楚,可以去看看http协议和session的实现原理
      

  5.   

    但是实际结果是   我打开第二个login.jsp的时候  第一个用户的session为空了,如果我再登陆第三个用户的时候,第二个用户的session也为空了!! 我也知道 session本身应该没有问题。。
      

  6.   

    我同意,我不想考虑session。因为我用了那摸长时间一直没有出现过问题。你应该仔细检查下
      

  7.   

    实在非要做,只能自己控制了,因为session的实现,也是有个sessionid传递的,自己模拟一个吧。
      

  8.   

    IE7有这样的问题 不管开几个浏览器 都是一个sessionId  不是程序的问题
      

  9.   

    你检查下你的 Spring 配置文件。
      

  10.   

    像 IE 是一个进程共用一个 session, 因为一般来说 session id 这样的 cookie 是内存型的 cookie,放在内存里面的,新开的 IE 不在同一个进程里面就不同,你在桌面上双击 IE 打开第二个 IE 窗口 和 在一个已经打开的 IE 窗口中用 'File > New' 或 Ctr + N 打开一个窗口是 两种不同的情况,前者另开一个进程,后者是同一个进程。支持一个 IE 进程开多个 session 的话,需要 URL re-write , 不过这对程序代码有额外的要求,需要在 JSP页面中的所以动态内容(就是除了 css / jpg 这个不变的内容之外) 的 URL 都要改写 URL,