如何在人员登陆的时候统计在线的人数,在线的人员以高亮显示,不在线以灰色显示
public   class   SessionCounter   implements   HttpSessionListener   {   
    
    private   static   int   activeSessions   =   0;   
    
    public   void   sessionCreated(HttpSessionEvent   se)   {   
      activeSessions++;   
    }   
    
    public   void   sessionDestroyed(HttpSessionEvent   se)   {   
      if   (activeSessions   >   0)   
        activeSessions--;   
    }   
    
    public   static   int   getActiveSessions()   {   
      return   activeSessions;   
    }   
  }   
这段代码只能统计正常的上线下线的情况,如果会话过期或者非法关闭浏览器就统计错误了,我有两种想法,一是通过数据库去统计,当人员登陆的时候或者不在线时,去修改数据库表中的状态,这样会不会在性能上有影响?还有一个是通过session去实现,但这个状态如何去控制呢?希望给点建议~

解决方案 »

  1.   

    严格的web 在线的统计做不到的你可以使用  application 设置一个全局的变量, 或者去找一个开源的内存数据库,
    然后通过记录 session 事件, 来写入和踢出在线与不在线的人
      

  2.   

    只能大概统计在线人员 ~在线的人员 可以将 USER 信息 放入SESSION 中 ~不过那样 服务器内存 消耗比较大 ~
      

  3.   

    用session的监听器,sessionBinder来监听每一个上线的人,然后列出来,搜索数据库来获得其它不在线的人(在数据库做一个标记)