设置一个appication变量,用户进入,将自己的名字加入到这个变量里去,然后在程序中间加一个不断刷新的页面,检测这个变量,一般这个变量存的就是在线的用户列表,或者用数据库也可以,但在退出时,要在这个变量或数据库中相应的项(自己的名字)清除

解决方案 »

  1.   

    ruguo以外退出呢。比如掉线等等。
      

  2.   

    还是在数据库里存,用一个字段标记用户最新的刷新时间,定期自动刷新判断页面,
    如果这个值超过一定时间,一般和session的超时一致,20分钟,就删除该用户的
    登陆记录。
      

  3.   

    感谢楼上众位朋友的热情支援!
    我用的是jsp做聊天室,聊天室没有和后台数据库打交道,大部分的功能是用javascript实现的,
    我现在用了一个
    synchronized (application)
    {
      //热门聊天室
        Vector vecUserName0100=null;  
        vecUserName0100= (Vector)application.getAttribute("UserName0100");
        if(vecUserName0100==null) vecUserName0100= new Vector(1000,1000);            
      
        if (!strName.equals(""))
        {
          vecUserName0100.addElement(strName);
        }
       
        String User="";
        try
        {
          for(int i=0;i<vecUserName0100.size();i++)
          {
            User= (String)vecUserName0100.get(i);
            strUserList0100+="'"+User+" "+User+" 0 0 0 0 0 0',";
          }
          strUserList0100=strUserList0100.substring(0,strUserList0100.length()-1);
        }
        catch (Exception e)
        {
          System.out.println("e0100="+e.toString());
        }    iUserCount0100=vecUserName0100.size();
        application.setAttribute("UserName0100",vecUserName0100);
    }
    用了一个同步的思想再作,现在只能够统计共有多少人进来,但是用户什么时候走,比方说关掉ie页面,而不是点击退出按钮,我就无法判断了。
      

  4.   

    关掉IE页面与点击按钮的操作是一样的,在onunload事件中加入一个清除session的操作如:sendhttp("clearseesion.asp")sendhttp是运用xml请求服务器的自定义函数 var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
     xmlhttp.Open("POST", sAspFile, false);
      

  5.   

    感谢hcsunjun(小子)的鼎力资助!