您的位置:首页 > 其它

在线用户、登录用户统计

2015-12-28 14:35 375 查看
1.在线用户,包括登录用户和未登录用户。

后台java

public class OnlineUser implements HttpSessionListener{

private static int sessionCount = 0;//在线用户数

//session创建,用户数加1
public void sessionCreated(HttpSessionEvent event) {
System.out.println("==================sessionCreated");
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
sessionCount++;
application.setAttribute("onlineCount", sessionCount);

}

//session销毁,用户数减1
public void sessionDestroyed(HttpSessionEvent event) {
System.out.println("==================sessionDestroyed");
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
if (sessionCount >= 1) {
sessionCount = sessionCount - 1;
}
application.setAttribute("onlineCount", sessionCount);

}

}

前台jsp

当前在线用户数:<s:property value="#application.onlineCount"/>人

2.登录用户统计

后台java

import javax.servlet.http.*;

import com.qkj.entity.User;

import java.util.*;

public class OnLineUser implements HttpSessionBindingListener {
private String userName;

public OnLineUser() {
System.out.println("请求:::::OnLineUser::::::");
}

private static Vector users = new Vector();
//获得在线用户数
public int getCount() {
users.trimToSize();// 调整Vector users的容量为Vector users的大小
return users.capacity();// 返回users的容量
}
//用户是否已经在线
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() + " 登入到系统 " + (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 + " 退出系统 " + (new Date()));
System.out.println(" 在线用户数为:" + getCount());
}
}

注册和登录成功时,开始计数

HttpServletRequest request = ServletActionContext.getRequest();

//监听在线用户
request.getSession().setAttribute(userNew.getUserName(), new OnLineUser());

注销或者session超时,sesssion-1

session.invalidate();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: