Struts 2 会话失效,将请求会话设置为新会话

问题描述 投票:0回答:2

在我的 Struts 应用程序中,一旦用户登录,我需要使当前会话无效并创建一个新会话。我使会话无效

getHttpServletRequest().getSession().invalidate();

我创建一个新会话为

getHttpServletRequest().getSession(true);

这里的问题是在上面我尝试访问

getSession()
之后,它给出了状态无效异常;
HttpSession
无效。

getSession()
返回一个地图,在我的动作类中我实现了
SessionAware
,其中有
setSession(Map session)

编辑:以下是例外情况

Error creating HttpSession due response is commited to client. You can use the CreateSessionInterceptor or create the HttpSession from your action before the result is rendered to the client: HttpSession is invalid
java.lang.IllegalStateException: HttpSession is invalid

所以,我认为问题是 Struts

getSession()
仍然引用我已无效的会话。

如何让 Struts

getSession()
引用我创建的新会话?

java struts2 httpsession
2个回答
11
投票

如果您想在使 servlet 会话失效后访问 struts 会话,您应该更新或更新 struts 会话。例如

SessionMap session = (SessionMap) ActionContext.getContext().getSession();

//invalidate
session.invalidate();

//renew servlet session
session.put("renewServletSession", null);
session.remove("renewServletSession");

//populate the struts session
session.entrySet();

现在 struts 会话已准备好使用新的 servlet 会话,并且您已准备好重用 struts 会话。


-1
投票

嗨@roman C 和 Harshana。

我也面临同样的问题,但我的应用程序在 struts 2.3 上运行良好。现在我将 struts 应用程序升级到 6.0 新版本,但我在浏览器上收到会话无效错误 你能帮忙解决这个问题吗 我在堆栈溢出上发布了我的问题,你能看一下这个问题吗 会话未正确失效,出现错误 UT000010:会话无效 HubC5VAM4TUaSwQgPtLbbmAEXTAZii0VTrfXfNJw

© www.soinside.com 2019 - 2024. All rights reserved.