在线用户、登录用户统计
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();
后台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();
相关文章推荐
- 三俗网站必备之动态广告
- Java基础之隐式转换vs强制转换
- Swift项目中利用SWRevealViewController实现侧滑菜单
- 浏览器插件框架
- 计算一个整数的二进制表示有多少个1(别人的最快算法)
- Android动画_LayoutTransition
- 微信共享地址接口封装【完整DEMO代码】
- nginx 安装
- POJ 1797 Heavy Transportation(最大生成树-Prim)
- 杂文
- 清理缓存的几种方法
- 判断是否为第一次登陆
- 在老男孩教育,我才感觉到,我的人生走到了直线——
- mongodbTemplate查询
- jstat命令详解
- 解决网页视频无法播放问题 (搜狐)
- 电子地图坐标系统研究整理
- AsyncTask
- bzoj3139: [Hnoi2013]比赛
- 电力系统相关