您好,登錄后才能下訂單哦!
這篇文章主要介紹了java如何統計當前在線數,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
java統計當前在線數
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: hotmail.com">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;
}
感謝你能夠認真閱讀完這篇文章,希望小編分享的“java如何統計當前在線數”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。