我也想知道:[email protected]

解决方案 »

  1.   

    必须有个隐藏页面在服务器端刷新,发现过期的用户立刻把它从application中删掉!
    这个可以用ServletContextListener实现实时监控,定期例如10s,20s自动刷新一次!
      

  2.   

    将用户列表保存在一个application属性中,当这个用户的session失效以后(即使用户关闭浏览器的话同样也会失效)会触发一个事件,在这个事件发生后再application中删除这个用户即可登陆的时候判断如果用户名已经被保存在列表中,将不能登陆
    这种办法可以保证一个用户的session绝对唯一性,当然也会有一些不利因素,比如下面的例子比如你的session超时设置为2小时,那么用户A登陆后不小心关掉了浏览器,那么他此时需要等待2小时他的session失效后才能再行登陆session的失效事件捕捉方法需要你自己创建一个javax.servlet.http.HttpSessionBindingListener
    接口的实现方法来完成.你只要看一下这个接口的方法定义大概就能晓得怎么用了,如有问题可以短信问我
      

  3.   

    这个可以参照在线人数统计的做法,你可以google一下这方面的信息。
      

  4.   

    登陆信息放在session中最好,最快
      

  5.   

    用session监视器监视session属性值的设置和销毁,在系统中维护一个系统登录用户表,当用户登录时要设置session属性值(用户名),此时监视器负责向系统登录用户表中添加该用户名;当用户注销或因为超时session在销毁属性值时监视器负责将系统登录用户表中的用户名删除。
      

  6.   

    呵呵,在username,password的表中再设一个字段uesd,在用户登陆的时候去判断这个值,登陆和注销时去改变这个值
      

  7.   

    用个专门登陆表吧    同意 yaray(雅睿,生活在别处,工作在别墅) 的说法:签到与签退,后者是关键.
      

  8.   

    同意: yaray(雅睿,生活在别处,工作在别墅) 
    我也是这样做的.
      

  9.   

    如果系统访问量不是很大、用户比较少的话用session比较适合
    如果访问量很大、用户比较多的话还是用用户表吧,设置登陆状态。
      

  10.   

    我非常想要!哪位好心的高手发给我吧
    [email protected]
      

  11.   

    大概知道解决问题的方向了,谁有着方面的代码,发给我可以么
    [email protected]
    (谢谢各位的帮忙,稍后就给分)
      

  12.   

    我觉得怎么判断一个用户是否在线简单,难的是在不正常情况下关闭浏览器用户在线状态的改变。不过有高人说设置listener,正在google这东西。
      

  13.   

    你看是否可以给帐号设置一个状态属性,这样可以检测一下。楼上说的用application对象的方法也可以。
      

  14.   

    其实这个问题,我以前也考虑过,我个人没有什么好的解决办法。
    登陆信息进入临时表,再来判断,ok,这个是可以的,logout之后自动标志置0或者删除这条记录都可以。
    但是如果是用户关闭浏览器呢,如果电脑掉电,如果网络突然断开......情况很多,以前本以为,将session时间置短,刷新之后取不到则清除,但是还是没有实现,因为,session存在,一定要有个时间间隔的,用户停留在页面上允许有一段过期时间存在的。
    但是像QQ等C/S结构的,实现了这个问题。
    不知道银行系统实现了没有,我说这么多,实际上也想知道有没有好的解决办法,和楼主一样期待好的解决办法。
    zhz586的愚见...
      

  15.   

    还有,QQ,msn是实时连接的,网页上不能实现的。
      

  16.   

    关注,以前我也想过,我有两个想法,一:有数据库里建一个字段,登录时先判断,如果为0则可以继续,然后把这个值改天1,退出的时候再给改成0,否则提示以经登录。这个可能效率不高。二:设session,登录时可以判判断一下,这个我没有试过,不过我想可以一起学习,关注!!!!!!!!!!