统计在线人数重复登录(二)

2014-11-24 02:08:33 · 作者: · 浏览: 4
ion.getattribute("username");
system.out.println("username:" + username);
system.out.println("sessionid:" + session.getid());
//因为过滤所有页面web.xml配置的是/*,第一次登陆username为空,得让可以登录
if (null == username) {
chain.dofilter(req, res);
system.out.println("过滤filter结束username=null");

} else {
// 用于记录状态
boolean temp = false;
system.out.println(sessionlist.containskey(username));
system.out.println(sessionlist.get(username));
system.out.println(sessionlist.get(username)
.equals(session.getid()));
if (sessionlist.containskey(username)
&& sessionlist.get(username).equals(session.getid())) {
// session值与当前id匹配,说明同一个用户
temp = true;

system.out.println("过滤filter结束,同一个用户");
}
// 存在了第二次登陆,销毁session
system.out.println("temp:" + temp);
if (!temp) {
session.invalidate();
response.setcharacterencoding("utf-8");
response.setcontenttype("text/html; charset=utf-8");
//转向的首页,根据自己项目
response
.getwriter()
.print(
"<script>window.top.location.href='/ssh2/save.jsp';alert('该账号已经在别处登录,请联系管理员或关闭ie,重新登录!');");

} else {
chain.dofilter(req, res);
}

}

}

}

web.xml的配置。
filter放在struts2拦截器的前面

userfilter

com.test.action.user.userfilter



userfilter
/*


listener的配置
调用session.invalide()的方法会被监听到,销毁session

com.test.action.user.userlistener

大概实现了,可能考虑不周:如果有问题共同探讨。