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数据吗?
或者有没有更好的防止重复登陆的方法。 展开
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数据吗?
或者有没有更好的防止重复登陆的方法。 展开
1个回答
展开全部
更多追问追答
追问
这个已经有了。
虽然session已经失效了,可是我没有将者实现的session从application中移除,这样将会导致application中无效数据越来越多。我想要的效果也是当session失效后就将它从application中移除
追答
当非正常退出后,session会被jvm自动回收,你用的是Java语言。。。它有自动回收垃圾的机制。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询