1 创建监听器
/**
* 解决HttpSession被反复销毁的问题
*/
@WebListener
public class HttpSessionLifecycleListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
//获取ServletContext对象,然后将所对应的HttpSession删除掉
HttpSession session = se.getSession();
ServletContext servletContext = session.getServletContext();
Users users = (Users) session.getAttribute(Constants.USER_SESSION_KEY);
servletContext.removeAttribute(users.getUserid()+"");
}
}
因为当两个游览器同时访问,有一个账号登录产生session之后超时销毁了,但是另一个游览器登录拿到了session(此时的session以被销毁),因为只能一个地方登录所以要继续销毁,销毁掉销毁的session所以报异常,所以加个监听器监听销毁的session时我们就把httpsess删除就行。
本文探讨了在多浏览器环境下,HttpSession重复销毁导致的异常问题,并提供了解决方案。通过实现HttpSessionListener监听器,当session销毁时,从ServletContext中移除相应的用户信息,避免了异常情况的发生。
1万+

被折叠的 条评论
为什么被折叠?



