因为对于当前登录用户要采取一些操作,一般的做法是登录之后用HttpSession保存。
但是要在一个环境利用这个当前登录用户,并且这个环境无法获取到Session对象,所以我想问的是
如何在一个用户登录之后,在一个地方保存这个用户,之后在一个获取不到Session对象的环境也可以访问这个登录用户信息。我开始打算用ThreadLocal但是发现,在另外一个页面get到的是null。也不打算采取系统及的静态变量,因为这样只能有一个用户登录了。请教,谢谢!

解决方案 »

  1.   

    那就再前一个页面
    新var一个变量,把用户传到下个页面去
      

  2.   

    在页面中一直用
    request.setAttribute("userName",yourName);
    request.getAttribute("userName");
      

  3.   

    我开始打算用ThreadLocal但是发现,在另外一个页面get到的是null。 记住,ThreadLocal必须在页面一开始访问的时候就设置,而且必须设置,然后再同一个线程里就能访问到。他就是一个以线程的ID做Key的 Map 而已。我一般在过滤器里,进行Session读取,然后将用户信息写入ThreadLocal 里面,其它地方就不需要非得有session了。
    因为2个请求很可能是2个线程(tomcat有线程池,分到同一个线程的几率很低)
      

  4.   

    老紫竹谢谢你,我现在就是这样做了。的确做一个filter在filter中获取session中的User对象,然后再把User对象set进ThreadLocal。谢谢