栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

解决HttpSession超时销毁异常问题java.lang.IllegalStateException: invalidate: Session already invalidated

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解决HttpSession超时销毁异常问题java.lang.IllegalStateException: invalidate: Session already invalidated

问题:

​ 当设置的HttpSession时间超时时,系统就会销毁用户登录存储的session信息,但此时再打开一个浏览器登录就会报错,是因为此时,ServletContext中存储的用户session还在,再次登录销毁另一个已经不存在的session就会报错

java.lang.IllegalStateException: invalidate: Session already invalidated

解决办法:

​ 创建一个session生命周期的listener监听器,当HttpSession销毁时会触发listener监听器,在ServletContext中根据sessionid查找对应的session并销毁

@WebListener
public class UserLoginListener 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("users");
        servletContext.removeAttribute(users.getUserid()+"");
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号