前言:
之前写过一篇关于统计在线用户及单用户登录的文章,后来发现如果设置session超时,则存在同一个浏览器下不同用户登录,session超时后,登录用户的Vector没有做到相应更新。
解决方法:
在前一篇文章的基础上做以下修改:
public class User{
private String sessionId; //增加sessionId字段,存放sessionId
......提供set、get方法
}
public class UserList{
private Vector<Userlogin> v1 = new Vector<Userlogin>(); //增加v1,存放sessionId相同的用户信息
public Vector<Userlogin> IsExistSessionId(String sessionId) throws Exception {
// 增加IsExistSessionId方法,筛选出sessionId相同的用户,根据sessionId筛选
}
}
public class UserListener implements HttpSessionAttributeListener, ServletContextListener{
public void attributeAdded(HttpSessionBindingEvent event) {
//用户信息添加到Vector前,获取sessionId增加到用户信息中
}
public void attributeRemoved(HttpSessionBindingEvent event) {
//获取sessionId,调用userList的IsExistSessionId方法,并从Vector中清除与之匹配的sessionId用户
//注意:用户退出时,不要操作session,直接从Vector中删除该用户信息即可
}
public void attributeReplaced(HttpSessionBindingEvent event) {
//用户信息添加到Vector前,获取sessionId增加到用户信息中
}
}