【发布时间】:2013-06-20 15:57:56
【问题描述】:
在我的 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() 引用我创建的新会话?
【问题讨论】:
-
你检查过 web.xml 中的会话超时吗?
-
谢谢。它设置为 30
-
当你使servlet会话无效时,你为什么要访问struts会话?
-
是这样的。动作转发的 jsp 具有 s:token 标记。我假设创建一个令牌并尝试将其放入会话中。而这个 s:token 可能无法通过请求访问会话。这就是编辑后的答案异常抛出的点。
-
实际上在这个 s:token 问题之前我放了一个 getSession() 语句,当该行执行会话无效异常时抛出。但是后来我确实喜欢 setSession(null) 并再次分配 getSession(map) 并打印 getSession() 然后那个异常就消失了。现在,当 jsp 呈现上述异常时,由于 s:token 而发生了我发布的异常
标签: java struts2 httpsession