欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入
//如果用户超过10分钟没有访问,则认为不在线
if(subTime(nowtime,temp[1]) > 600)
{
//System.out.print(“清空list过期的值”+i);
list1.remove(i);
}
}
//添加一个新的在线用户
list1.add(str);
//释放资源
str = null;temp = null;
}
public static int getOnlineAllCount() {
//返回当前在线人数
return list1.size();
}
public static int getOnlineCount() {
//返回当前在线人数
return list.size();
}
/*public static void romovelist()
{
}*/
public static List getOnline() {
return list;
}
/** 计算两个时间差,返回相差秒数 */
public static int subTime(String src,String des) {
int n = 0;
java.util.Calendar ca = java.util.Calendar.getInstance();
long time1 =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;
}
/**
* 获得当前时间
* @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;
}
}
3、在web。xml中配置监听类
<!– online user –>
<listener>
<listener-class>baby.com.common.SessionListener</listener-class>
</listener>
最后就是在访问页面调用类中的alluser方法来实现统计在线人数就可以了
String ip=””;
if (request.getHeader(“x-forwarded-for”) == null)
{
ip= request.getRemoteAddr();
}
else
{
ip=request.getHeader(“x-forwarded-for”);
}
OnlineCounter.allUser(ip);
这样就完成了 在线统计功能。
[1][2]
要铭记在心;每天都是一年中最美好的日子