分享
 
 
 

java统计当前在线数

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有