在我的 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()
引用我创建的新会话?
如果您想在使 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 会话。
嗨@roman C 和 Harshana。
我也面临同样的问题,但我的应用程序在 struts 2.3 上运行良好。现在我将 struts 应用程序升级到 6.0 新版本,但我在浏览器上收到会话无效错误 你能帮忙解决这个问题吗 我在堆栈溢出上发布了我的问题,你能看一下这个问题吗 会话未正确失效,出现错误 UT000010:会话无效 HubC5VAM4TUaSwQgPtLbbmAEXTAZii0VTrfXfNJw