我们的项目由2个应用(web1,web2)组成,共同放在同一个tomcat下.
目前的问题是,
项目的登录入口: web1的登录页面。
登录成功后,把该用户的登录信息放入web1的session里面,servletRequest.setSession("user",user)
之后通过
ServletContext ContextMybase =servletRequest.getSession().getServletContext();
ContextMybase.setAttribute("mybaseSession",servletRequest.getSession());然后在web2工程里,通过
ServletContext context = request.getSession().getServletContext().getContext("/web1");
session = (HttpSession)context.getAttribute("mybaseSession");
获取到session,并通过该session获取到当前登录用户的信息(以String保存)现在的问题是,两个不同的用户,从不同的客户端登录,后登录的会把 前一个人的共享的session里的 登录信息覆盖就是说,似乎,这个共享的session里只能保存一条用户记录,不能为每个客户端各分配一个session这个问题不知道怎么解决,望大家指教。

解决方案 »

  1.   

    因为你把session放到servletContext中的mybaseSession里了,你每次调用
    ContextMybase.setAttribute("mybaseSession",servletRequest.getSession());
    就会把之前的session覆盖掉。不只是web1与web2,web1里有多个用户登录时,也会出现同样的情况。因为serletContext是唯一的。结论是:你们的设计有问题,session应该对应用户,不应该放在servletContext中,如果想保存当前用户登录的信息,至少也应该是一个list。而不是傻乎乎的setAttribute到一个命名下。
      

  2.   

    SESSION是对应客户端分别来保存的.但是ServletContext是唯一的.不能用来保存客户的信息.
    这种情况最好是用DB来保存了.