javaweb项目,防止用户重复登陆问题,求大神指导

//判断该账号是否已登录,如果登陆则强迫下线Map<String,Object>applicationMap=ActionContext.getContext().get... //判断该账号是否已登录,如果登陆则强迫下线
Map<String, Object> applicationMap = ActionContext.getContext().getApplication();
HttpSession s = (HttpSession) applicationMap.get(u.getId().toString());
//需注意session是否已经无效了
if(s != null && !s.isNew() && u.getId().equals(s.getAttribute("userid"))) {
s.setAttribute("userid", 0);
applicationMap.remove(s);
}
HttpSession session = request.getSession();
session.setAttribute("userid", u.getId());
applicationMap.put(u.getId().toString(), session);
以上代码用于防止重复登陆。

用户点击退出时将session从application中移除。
可有这么一个问题,如果用户是非正常退出的(没有点击退出按钮,而事实也很少有人会点击),那么该session将会一直存在application中,时间久了,将会导致application中存在大量无用数据,有什么好的方式可以清楚application中的无用的session数据吗?
或者有没有更好的防止重复登陆的方法。
展开
 我来答
Green142
2015-04-16 · TA获得超过355个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:102万
更多追问追答
追问
这个已经有了。
虽然session已经失效了,可是我没有将者实现的session从application中移除,这样将会导致application中无效数据越来越多。我想要的效果也是当session失效后就将它从application中移除
追答
当非正常退出后,session会被jvm自动回收,你用的是Java语言。。。它有自动回收垃圾的机制。。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式