String uid = (String)session.getValue("uid");
session.invalidate();

解决方案 »

  1.   

    HttpSession Sess = SessCon.getAttribute(SessionId);
      

  2.   

    我觉得session之间是相互独立的,从一个session或request对象中取得另一个session对象好像不太可能。如果要我做的话,我会选择用application对象。
      

  3.   

    SessCon.getSession(SessionId);SessCon是HttpSessionContext对象,它的getSession()方法当初用来返回与某个session id相关的session。现在返回空值。
    所谓“该批判”的意为不建议的,Java为了出于安全考虑,在后期版本中停止了对该接口的支持。
      

  4.   

    我是想通过sessionid得到这个session对象,不是说通过session传递参数,也就是说,我每产生一个session,都把他的sessionid存到一个表中,我可以在另外的地方,通过这个sessionid,得到这个session对象。to  careless(深潭静水) :
    用application如何得到session对象呢?
    也就是说我就是要操作session对象。
      

  5.   

    to  careless(深潭静水) :
    为什么我给出了sessionid,却不能用SessCon.getSession(SessionId)得到这个session呢?
      

  6.   

    现在由于安全的原因,已经不再支持这种方法了。可以设想一下,用户的一些信息都保存在Session中,我们在开发时留个后门,用户的资料就可以到我们手中了(他的密码,信用卡号..)。本来可以通过Interface HttpSessionContext
    但是现在:Deprecated. As of Java(tm) Servlet API 2.1 for security reasons, with no replacement. This interface will be removed in a future version of this API.
      

  7.   

    我所说的application对象解决方法只供参考,当然,还有其他方法。
    我们要解决的是两个session之间的协调问题,即:如果两个session由同一个人用户登录产生的,那么将前一个登录产生的session失效。
    我们可以在登录时将用户名、登录时间、session ID等信息记入application对象中,用户注销时将信息删除。由于application的特点,对象中的信息是整个项目中的所有程序都可以访问的,所以第二次登录的时候,到查询application中查询该用户是否已登录,如果发现该用户已登录(登录尚未没超时),则将前一次登录时记录的那条application信息打上无效记号,当然,后来这次登录的信息也要写入application。下面只剩下一个问题了:即,使已经打上无效记号的application中的session ID失效! 这个问题应该很好办了吧,每次用到session的时候只要到application里检测一下自己的session是否被打上了无效记号。
      

  8.   

    我明白你的意思,但是每个用户都要往application中写数据,那肯定不能用一个变量来记录某个数据,比如:username,只有一个变量如何记录那么多用户名呢?就是剩下这么一个问题呢,你明白我的意思吗?
      

  9.   

    我在application中要设置一个用户信息数组,每次使用session时都要查询我的applicaton中的数组吗?数组的大小如何设定,还是用hashtable?