其实这是我看到网上一个帖子,根据sessionid任意销毁对应的session,其实就是在打开浏览器的时候利用监听器,创建一个HashMap A 记录下对应的sessionid和session(这步很重要),但是实现踢人功能不能仅仅根据sessionid来销毁session,其实我们可以在创建一个HashMap B,记录下用户标记(如ID)和他的对应sessionid(我们不可能再踢人的时候获取到想要销毁的sessionid),然后只要有用户登录同一个帐号,我们就可以先根据id在HashMap B获取到上个sessionid(要踢的人的session),直接销毁session,然后再清除HashMap B上的信息,最后put新来的用户的信息。
代码如下:
1:session监听器 hashmap a这里建立
2ACTION 或servelt
java.util.HashMap qq=com.sessionlistener.sessionlistener.sessionl;
System.out.println("sesssionmap大小"+qq.size());
javax.servlet.http.HttpSession ss=(javax.servlet.http.HttpSession)qq.get(sessionid);
if (ss!=null)
{
ss.invalidate();
System.out.println("有人被踢了");
}
pp.put(user.getUserId(), request.getSession().getId());
user.setUserLastLoginIp(request.getRemoteAddr());
int loginTimes = user.getUserLoginNum();
user.setUserLoginNum(loginTimes+1);
DaoFactory.getInstance().getUserDao().update();
request.getSession().setAttribute("User", user);
System.out.println("登录结束后sesssionmap大小"+qq.size());
}
}
out.print(user.getUserNickname());
}
else
{
out.print(1);
}
}