您的位置:首页 > 编程语言 > Java开发

java session统计在线人数

2017-08-28 11:53 197 查看
首先创建监听器,监听器实现ServletContextAttributeListener, HttpSessionAttributeListener两个接口。

public class LoginUserListener implements ServletContextAttributeListener,
HttpSessionAttributeListener {

public void attributeAdded(ServletContextAttributeEvent event) {
}

public void attributeRemoved(ServletContextAttributeEvent event) {
}

public void attributeReplaced(ServletContextAttributeEvent event) {
}

/**
* session创建后触发该方法,将session信息添加到集合中
*/
public void attributeAdded(HttpSessionBindingEvent event) {
if (event.getName().equals(IConstant.SESSION_TUSER)) {
//获取session信息
HttpSession session = event.getSession();
if(session!=null){
//获得用户信息
TUser user=(TUser)event.getValue();
//获得application信息
ServletContext application = session.getServletContext();
//从application中获得session列表
HashSet<TUser> hashSet=(HashSet<TUser>)application.getAttribute(IConstant.APPLICATION_SESSION);
//判断列表数据是否为空 如果为空 需要实例化sessionlist
if(hashSet==null){
hashSet=new HashSet<TUser>();
}
//判断用户的session是否已经存在,如果已经存在则不在添加
hashSet.remove(user);//先删除,避免重复添加
//将新增用户添加到list中
hashSet.add(user);
application.setAttribute(IConstant.APPLICATION_SESSION, hashSet);
}
}
}

/**
* session被清除里触发,一般用户用户退出时
*/
public void attributeRemoved(HttpSessionBindingEvent event) {
if (event.getName().equals(IConstant.SESSION_TUSER)) {
//获取session信息
HttpSession session = event.getSession();
//获得用户信息
TUser user=(TUser)event.getValue();
ServletContext application = session.getServletContext();
//从application中获得session列表
HashSet<TUser> hashSet=(HashSet<TUser>)application.getAttribute(IConstant.APPLICATION_SESSION);
if(hashSet!=null){
hashSet.remove(user);
//将剩余的放置在application中
application.setAttribute(IConstant.APPLICATION_SESSION, hashSet);
}
}
}

/**
* session被替换时触发
*/
public void attributeReplaced(HttpSessionBindingEvent event) {
System.out.println("attributeReplaced");
}

}


在web.xml中添加监听器

<listener>
<listener-class>com.jz.sys.listener.LoginUserListener</listener-class>
</listener>


在绑定session或清除session时会触发以上方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: