可以考虑在application中用一个变量来保存所有登陆用户信息。
用户登陆后把用户名或其他相关信息追加到该变量,用户注销或关闭窗口的时候在变量中把该用户信息消除。

解决方案 »

  1.   

    不能用数据库吧,直接判断session吧,这就是bs结构的一个弱点
    因为http协议是无政府状态的,你reponse之后,你就失去了对客户端的控制
      

  2.   

    to tingod(┞┧○┟┦○) :我怎么知道用户关闭窗口?
      

  3.   

    将登录的用户ID放在一个Hashtable里。
    具体去看Hashtable的API。
      

  4.   

    调用js的事件
    <body onClose='fun()'>
      

  5.   

    to tingod(┞┧○┟┦○) :
    在application中,我只用过上下文getServletContext().getAttribute()
    我在用户登录时,把它的登录信息往上下文中放,再做一个登出程序,让他删除上下文,行吗?
    如果,它没有登出,也没有<body onClose>,而是通过session超时登出的,怎么办??
      

  6.   

    能知道用户关闭窗口的,我曾经亲自做过聊天室!
    <body onunload='reduce()'>在这个reduce()里可以作处理,把application中的该用户减去!
      

  7.   

    to 13060939425(我是煤碳商人)没试验过,不过估计可以吧。
    session超市登出的话,可以考虑保存所有session id而非用户名
      

  8.   

    njyyao(yaoyao) 严重同意方法有很多,可以将登陆的用户放在一个hashtable里,再将这个hashtable放在app里。
    每个用户对象里放入这个用户上次动作时间。或是将所有登陆的用户放在一个stateful session bean里,和上面的方法大同小易。或是对每个登陆的用户都建一个stateful session bean,当这个session bean被
    passivate的时候,视为用户超时,但是问题是session bean被passivate的时机我们
    无法控制,weblogic里可以设两个参数控制,但是并不能绝对的控制passivate的时机,
    哪位大侠对这个有研究,希望不吝赐教。有关在线用户的问题是,如果用户不是点“退出”,而是:
    1,用户关闭窗口,可以用onunload()解决
    2,用户长时间无动作。session失效。但是session被destroy的时候,我们有什么方法
    可以感知?例如weblogic里,一个session失效,as会出现什么事件?如果没有我们可以
    感知的事件,那是不是可以定时的检查user hashtable里各个用户的上次动作时间,如果
    超时,我们可以将这个用户从user hashtable里去掉,这个定时检查怎么实现?哪位大侠
    有好的办法。
      

  9.   

    http://expert.csdn.net/Expert/topic/1547/1547682.xml?temp=.9748041
      

  10.   

    我也想知道session的有效时间是多少?
    可以改吗?
      

  11.   

    hch9230(走路的人) 能知道用户关闭窗口的,我曾经亲自做过聊天室!
    <body onunload='reduce()'>在这个reduce()里可以作处理,把application中的该用户减去!请问你怎么用js来处理java函数和方法?
    ASP差不多,因为有active x嘛
      

  12.   

    kyouyouCafe(kyouyouhttp://expert.csdn.net/Expert/topic/1637/1637521.xml?temp=.3022119
      

  13.   

    vick(瞌睡虫)
    reduce()里submit一个request
      

  14.   

    实现HttpSessionBindingListener接口,给一个例子:
    http://www.javaresearch.org/article/showarticle.jsp?column=2&thread=2164