使用重定向后Session会话会出现丢失的情况,如何解决?
我也踩过这个坑( 1 )
会话管理
详细描述
编辑于2024-11-24
-
[武汉|荣耀师兄]JAVA-刘欢0
解决方法, 通过Memcache保存Session会话.
- 注意, Session是容器保存的,内容放置在服务器具体的文件中,并不是程序保存的, 这个概念一定要搞清楚.
- 我这里场景是 登陆后执行一个请求列出所有用户, 所以不能直接转到jsp.
- 使用
redirect
跳转页面会导致 session 值丢失. 参考连接1 参考连接2 - 解决方法
- 思路: handler中保存session后,先forward到一个handler再redirect到目标handler, session值不会丢失
- 具体实现:
- handler 中保存 session, 此时session还未保存到容器中
- 返回页面使用redirect到新页面,因为重定向特性不会带前页面的数据, 所以容器会将session值直接丢弃,导致session值丢失.(session id还在)
- 返回时使用 forward 到新handler, 容器会将session保存.
- 在新handler中再redirect到新页面, 此时session已保存,不会影响
- handler 中保存 session, 此时session还未保存到容器中
编辑于2018-05-25
- 去第 页