liu4626846 发表于 2013-2-3 14:43:47

javaweb 在线人数统计

package org.login.actions;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import   java.util.List; import   java.util.ArrayList; import javax.servlet.http.HttpSession;/**   *   计算在线人数,说明:   *   *   在访问页面放入:   *   OnlineCounter.addUser(Object   object)   *   一般用ip来作为object的传入值,统计登陆在线人数,也可用用户名   *   来作为object传入值。   *   *   调用显示在线人数   *   OnlineCounter.getOnlineCount()   *   *   *   返回一个List,里面以String[]形式存放传入的object值和最后访问页面时间。   *   OnlineCounter.getOnline()   *   */@SuppressWarnings("unused")public   class   OnlineCounter   {   private   static   List<String[]>   list   =   new   ArrayList<String[]>();   private   OnlineCounter()   {   }   public   static   void   addUser(Object   object)   {      //得到用户当前访问时间    SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd   HH:mm:ss");    String   nowtime   = sm.format( new Date());      //Str数组用来存放用户得ip和访问时间         String[]   str   =   new   String;         str   =   object.toString();         str   =   nowtime;         //temp数组用来临时存放从list里面取出的用户ip和访问时间         String[]   temp   =   new   String;         //循环list         for   (int   i   =   list.size()-1;   i   >=   0;   i--)   {             temp   =   (String[])list.get(i);             //如果从list里面取出的用户ip和str里面存放的ip相同,则更新访问时间             if(temp.equals(str))   {               list.set(i,str);               return;             }             //如果用户超过5分钟没有访问,则认为不在线             if(subTime(nowtime,temp)   >   60)   {               list.remove(i);         }}      //添加一个新的在线用户         list.add(str);         //释放资源         str   =   null;temp   =   null;   }   public   static   int   getOnlineCount()   {         //返回当前在线人数         return   list.size();   }   public   static   List<String[]>   getOnline()   {         return   list;   }   private static long getLongDate(String date){    date = date.replace("-", "").replace(" ", "").replace(":", "");    return Long.parseLong(date);      }    private   static   long   subTime(String   src,String   des)   {      int   n   =   0;         java.util.Calendar   ca   =   java.util.Calendar.getInstance();         long   time1   = getLongDate(src)-getLongDate(des);         return   time1;   } }  还有一个问题, 就是在不进行超时功能时 不知道如何解决用户已经退出的问题!
页: [1]
查看完整版本: javaweb 在线人数统计