在线用户列表的写法
近日项目中要用到这个功能,查阅很多资料后,总结如下。
由于项目不只要统计用户数,还要显示相关在线用户的信息,所以考虑用HttpSessionBindingListener接口。
该接口包含了valueBound()和valueUnbound()两个方法,分别可以对创建session和注销session、session过期做出响应。
此处我们建立HttpSessionBindingListener接口实现类
package com.sscm.common.organization;
import javax.servlet.http.*;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import java.util.*;
import com.retop.scm.common.*;
public class OnlineCounterListener implements HttpSessionBindingListener{
private OnlineUser newUser=null; //OnlineUser是用户类
/**
* Constructor for OnlineCounterListener.
*/
public OnlineCounterListener() {
newUser = new OnlineUser();
}
public void valueBound(HttpSessionBindingEvent e){
ScmLogin scmLogin = (ScmLogin)e.getSession().getAttribute("ScmLogin");
newUser.setScmLogin(scmLogin);
try {
if(isInList(scmLogin))
newUser.updateOnline();
}
catch (Exception ex) {
}
//System.out.println("用户"+e.getSession().getAttribute("ScmLogin")+"上限");
}
public void valueUnbound(HttpSessionBindingEvent e){
ScmLogin scmLogin = (ScmLogin)e.getSession().get