【使用重定向后Session会话会出现丢失的情况,如何解决? _会话管理 】 | IT修真院·坑乎
问题已收录 使用重定向后Session会话会出现丢失的情况,如何解决?
我也踩过这个坑( 1 )
已统计您的踩坑,无需重复点击
回答(1)
会话管理
详细描述
编辑于2024-11-20
  • [武汉|荣耀师兄]JAVA-刘欢
    0

    解决方法, 通过Memcache保存Session会话.

    • 注意, Session是容器保存的,内容放置在服务器具体的文件中,并不是程序保存的, 这个概念一定要搞清楚.
    • 我这里场景是 登陆后执行一个请求列出所有用户, 所以不能直接转到jsp.
    • 使用 redirect 跳转页面会导致 session 值丢失. 参考连接1 参考连接2
    • 解决方法
      1. 思路: handler中保存session后,先forward到一个handler再redirect到目标handler, session值不会丢失
      2. 具体实现:
        • handler 中保存 session, 此时session还未保存到容器中
          • 返回页面使用redirect到新页面,因为重定向特性不会带前页面的数据, 所以容器会将session值直接丢弃,导致session值丢失.(session id还在)
          • 返回时使用 forward 到新handler, 容器会将session保存.
        • 在新handler中再redirect到新页面, 此时session已保存,不会影响


    编辑于2018-05-25