package com.wen;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* <p>Title: </p>
* <p>Description:统计在线人数 </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author explorer
* @version 1.0
*/
public class OnlineuserNum {
public OnlineuserNum() {
}
private Vector users = new Vector();
public int getCount() {
users.trimToSize();
return users.capacity();
}
public boolean existUser(String userName) {
users.trimToSize();
boolean existUser = false;
for (int i = 0; i < users.capacity(); i++) {
if (userName.equals( (String) users.get(i))) {
existUser = true;
break;
}
}
return existUser;
}
public boolean deleteUser(String userName) {
users.trimToSize();
if (existUser(userName)) {
int currUserIndex = -1;
for (int i = 0; i < users.capacity(); i++) {
if (userName.equals( (String) users.get(i))) {
currUserIndex = i;
break;
}
}
if (currUserIndex != -1) {
users.remove(currUserIndex);
users.trimToSize();
return true;
}
}
return false;
}
public Vector getOnLineUser() {
return users;
}
public void valueBound(HttpSessionBindingEvent e) {
users.trimToSize();
if (!existUser(e.getName())) {
users.add(e.getName());
System.out.print(e.getName() + "/t 登入到系统/t" + (new Date()));
System.out.println(" 在线用户数为:" + getCount());
}
else {
System.out.println(e.getName() + "已经存在");
}
}
public void valueUnbound(HttpSessionBindingEvent e) {
users.trimToSize();
String userName = e.getName();
deleteUser(userName);
System.out.print(userName + "/t 退出系统/t" + (new Date()));
System.out.println(" 在线用户数为:" + getCount());
}
}
此博客展示了一个Java类OnlineuserNum用于统计在线人数。通过Vector存储用户信息,提供获取在线人数、判断用户是否存在、删除用户等方法,还利用HttpSessionBindingEvent处理用户登录和退出事件,实现对在线人数的动态统计。
1385

被折叠的 条评论
为什么被折叠?



