<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      java統計當前在線數

      [摘要]package com.hnedu.stat;/** * 計算在線人數,說明: * * 在訪問頁面放入: * com.hnedu.stat.OnlineCounter.addUser(Object object) * 一般用ip來作為object的傳入值,當然,如果網站統計登陸在線人數,也可用用戶...
      package com.hnedu.stat;
      /**
      * 計算在線人數,說明:
      *
      * 在訪問頁面放入:
      * com.hnedu.stat.OnlineCounter.addUser(Object object)
      * 一般用ip來作為object的傳入值,當然,如果網站統計登陸在線人數,也可用用戶名
      * 來作為object傳入值。
      *
      * 調用顯示在線人數
      * com.hnedu.stat.OnlineCounter.getOnlineCount() *
      *
      * com.hnedu.stat.OnlineCounter.getOnline()
      * 返回一個List,里面以String[]形式存放傳入的object值和最后訪問頁面時間。
      * by crazyren 2003-08-05 email: c_crazyren@hotmail.com
      */
      import java.util.List;
      import java.util.ArrayList;
      import javax.servlet.http.HttpSession;
      public class OnlineCounter {
        private static List list = new ArrayList();

        private OnlineCounter() {
        }
        public static void addUser(Object object) {
          //得到用戶當前訪問時間
          String nowtime = com.hnedu.util.StringUtils.getTime("mm:ss");
          //Str數組用來存放用戶得ip和訪問時間
          String[] str = new String[2];
          str[0] = object.toString();
          str[1] = nowtime;

          //temp數組用來臨時存放從list里面取出的用戶ip和訪問時間
          String[] temp = new String[2];

          //循環list
          for (int i = 0; i < list.size(); i++) {
            temp = (String[])list.get(i);
            //如果從list里面取出的用戶ip和str里面存放的ip相同,則更新訪問時間
            if(temp[0].equals(str[0])) {
              list.set(i,str);
              return;
            }
            //如果用戶超過5分鐘沒有訪問,則認為不在線
            if(subTime(nowtime,temp[1]) > 300) {
              list.remove(i);
            }
          }
          //添加一個新的在線用戶
          list.add(str);
          //釋放資源
          str = null;temp = null;
        }

        public static int getOnlineCount() {
          //返回當前在線人數
          return list.size();
        }

        public static List getOnline() {
          return list;
        }
        /** 計算兩個時間差,返回相差秒數 */
        private static int subTime(String src,String des) {
          int n = 0;
          java.util.Calendar ca = java.util.Calendar.getInstance();
          long time1 =
            com.hnedu.util.StringUtils.compareStringTime(src,des,"mm:ss");
          ca.setTimeInMillis(time1);
          n = (ca.get(java.util.Calendar.MINUTE)) * 60;
          n = n + ca.get(java.util.Calendar.SECOND);
          return n;
        }
      }



      引用的StringUtils里面的兩個方法:

        /**
         * 獲得當前時間
         * @param parrten 輸出的時間格式
         * @return 返回時間
         */
        public static String getTime(String parrten)
        {
          String timestr;
          if(parrten==null parrten.equals(""))
          {
            parrten="yyyyMMddHHmmss";
          }
          java.text.SimpleDateFormat sdf=new SimpleDateFormat(parrten);
          java.util.Date cday=new Date();
          timestr=sdf.format(cday);
          return timestr;
        }

        /**
         * 比較兩個字符串時間的大小
         * @param t1 時間1
         * @param t2 時間2
         * @param parrten 時間格式 :yyyy-MM-dd
         * @return 返回long =0相等,>0 t1>t2,<0 t1<t2
         */
        public static long compareStringTime(String t1,String t2,String parrten)
        {
            SimpleDateFormat formatter = new SimpleDateFormat (parrten);
            ParsePosition pos = new ParsePosition(0);
            ParsePosition pos1 = new ParsePosition(0);
            Date dt1=formatter.parse(t1,pos);
            Date dt2=formatter.parse(t2,pos1);
            long l=dt1.getTime()-dt2.getTime();
            return l;
        }




      日韩精品一区二区三区高清