去这里看看
http://www.javaresearch.org/article/showarticle.jsp?column=2&thread=406

解决方案 »

  1.   

    一般比较好地记录在线人数的方法是把session结合数据库记录在线状态。你也可以通过进入聊天室的连接来变更状态。在通过数据库的状态记录聊天室的人数。
      

  2.   

    给个bean你看看,你写个jsp调用就行了package until;
    import javax.servlet.http.*; 
    import javax.servlet.*; 
    import java.util.*; public class onLineUser implements HttpSessionBindingListener { 
          public onLineUser(){
        }     private Vector users=new Vector();
        public int getCount(){
            users.trimToSize();
            return users.capacity();
        }
        public boolean existUser(String userName){
            users.trimToSize();
            boolean existUser=false;
            for (int i=0;i<users.capacity();i++ )
            {
                if (userName.equals((String)users.get(i)))
                {
                    existUser=true;
                    break;
                }
            }
            return existUser;
        }    public boolean deleteUser(String userName) {
            users.trimToSize();
            if(existUser(userName)){
                int currUserIndex=-1;
                for(int i=0;i<users.capacity();i++){
                    if(userName.equals((String)users.get(i))){
                        currUserIndex=i;
                        break;
                    }
                }
                if (currUserIndex!=-1){
                    users.remove(currUserIndex);
                    users.trimToSize();
                    return true;
                }
            }
            return false;
        }    public Vector getOnLineUser()
        {
            return users;
        }
          public void valueBound(HttpSessionBindingEvent e) { 
            users.trimToSize();
            if(!existUser(e.getName())){
                users.add(e.getName());
                System.out.print(e.getName()+"\t   登入到系统\t"+(new Date()));
                System.out.println("      在线用户数为:"+getCount());
            }else
                System.out.println(e.getName()+"已经存在");
          }       public void valueUnbound(HttpSessionBindingEvent e) { 
            users.trimToSize();
            String userName=e.getName();
            deleteUser(userName);
            System.out.print(userName+"\t   退出系统\t"+(new Date()));
            System.out.println("      在线用户数为:"+getCount());
          } 
    }
      

  3.   

    我不是想判断session的生成和销毁,聊天室是网站的一部分,我要判断的是用户是否离开了聊天室的那个页面
      

  4.   

    我不是想判断session的生成和销毁,聊天室是网站的一部分,我要判断的是用户是否离开了聊天室的那个页面具体的判断用户是否离开了一个页面是没有办法的,因为HTTP协议本身是connectionless的。但是你可以通过内部的实现来达到这个目的。如果在具体的话,就涉及到具体的设计以及开发的问题了。