登录的时候,我把user实体放session里了。
后来转了几个页面,什么都没做,只是链接过去了,一个一个。。再执行查询要用到user的时候,我打印了下session,他们不是同一个了。。
怎么不是同一个呢,为什么不是同一个?怎么解决啊?

解决方案 »

  1.   

    我怀疑你用的是多标签的浏览器。他们是共享session的。很讨厌的。
      

  2.   

    我用的ie6,只是前后两个session不一样
      

  3.   


    可不可以帮问题描述的清晰一点 是怎么不同?session缓存很头疼的 也许是可以的。
      

  4.   

    第一次登录的时候,登录后的user实体,我放在了session里面.
    struts里的MappingDispatchAction public ActionForward userLogin(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
    .....................此处代码得到user
    //把得到的user放到session中
                       HttpSession session = request.getSession();
    System.out.println("chataction中的session===================================="+session.getId());
                       session.setAttribute("user", user);
                  }
    辗转几个页面后,进行一次查询操作。。
    用到user,可得到的session不是同一个:
    HttpSession session = request.getSession();
    System.out.println("chataction中的session===================================="+session.getId());
      

  5.   

    你是不是也iframe啊,导致session丢失
      

  6.   

    两次打印的不是同一个 session
      

  7.   

    呵呵,有下面几种可能
    1.你在资源管理器的文件夹选项里的查看标签页里勾选了在单独的进程中打开文件夹窗口,这样session是不会一致的
    2.你的连接打开一个窗口,是showModal而不是open 或者showModal然后再open,这样session都会丢失(window.showModalDialog window.open交替使用)
    3."_blank", 你用这个的话 session肯定会是新的session,没什么可说的,改成open吧
    4.html标签有问题,这个最麻烦,有时候html标签写的不对,服务器不解析,直接把session丢了(可能性比较小)
      

  8.   

    只有一个原因 不是同一个session 
      

  9.   

    我之所以说_blank是会创建新session是因为这是和操作系统浏览器相关的,不同的浏览器实现不同,所以,_blank一般要是和session相关的话,我是不用的。如果原来可以的话,看看session是否超时,你可以这样调试 request.getSession(false) 看看session是不是null 是null就是timeout了,自己设置长一些