Java Sturts 2会话无效,将请求会话设置为新会话

Java Sturts 2会话无效,将请求会话设置为新会话,java,struts2,httpsession,Java,Struts2,Httpsession,在我的Struts应用程序中,一旦用户登录,我需要使当前会话无效并创建一个新会话。我宣布与您的会话无效 getHttpServletRequest().getSession().invalidate(); 我创建了一个新的会话 getHttpServletRequest().getSession(true); 这里的问题是在上面我尝试访问getSession()之后,它给出了状态invalid exceptionHttpSession无效 getSession()返回一个映射,其中在我的操作

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

getHttpServletRequest().getSession().invalidate();
我创建了一个新的会话

getHttpServletRequest().getSession(true);
这里的问题是在上面我尝试访问
getSession()
之后,它给出了状态invalid exception<代码>HttpSession无效

getSession()
返回一个映射,其中在我的操作类中,我实现了
SessionAware
,它具有
setSession(映射会话)

编辑:以下是例外情况

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会话。

您是否检查了web.xml中的会话超时?谢谢。它设置为30,当您使servlet会话无效时,为什么要访问struts会话。操作转发的jsp具有s:token标记。我假设创建一个令牌并尝试将其放入会话。并且该s:令牌可能无法通过请求访问会话。这就是编辑的应答异常抛出的点。实际上,在这个s:token问题之前,我放置了一个getSession()语句,当该行执行会话无效异常抛出时。但是我确实喜欢setSession(null),再次分配getSession(map)和print getSession(),然后异常就消失了。现在,当jsp呈现我所发布的上述异常时,由于s:tokens而发生了上述代码,应该在我使我从请求中获取的会话无效后放置,对吗?然后它说会话已经无效了知道吗?我所做的是,首先从请求中获取会话并使其无效。然后添加包含失效的代码(对于struts会话),最后使用request@Harshana不,您不应该使servlet会话无效,您应该使struts会话无效,这样您1)清理struts会话2)使servlet会话无效。你应该替换代码。而不是
getHttpServletRequest().getSession().invalidate()放置我的代码,不要
getHttpServletRequest().getSession(true)
。谢谢。工作起来很有魅力。以上的全部目的是固定会话固定。由于它将原始请求会话id更改为新的会话id,因此您的解决方案也成功地解决了该问题。我更改了标题并修改了问题,以便强调如何在struts 2中使struts会话无效,以便其他人受益,因为您的信息在google中找不到。再次感谢。