如何维护Struts2 Session

时间:2012-07-18 08:46:36

标签: struts2 session-state

我在我的应用程序中使用Struts2。在我的应用程序中,我有一个登录表单和一个主页面。成功登录后,我调用主页面,在主页面内我调用了另一个操作。到目前为止,一切正常,登录成功后页面也会显示,但是当我按下F5或点击浏览器刷新按钮时,它会给我登录页面,但我想要点击同一页面{{1}或刷新按钮。我怎样才能做到这一点,我的F5如下......

...

struts.xml

...

登录后我调用main.jsp并从main.jsp调用 mytable 操作。在向我显示主页面后,浏览器的地址栏仍显示登录操作

所以请帮助我如何保持会话。

1 个答案:

答案 0 :(得分:2)

首先,您必须考虑使用安全框架。我建议使用Spring Security。有很多你可以自己错误地实现安全性。这将确保用户经过适当的身份验证,并保护您免受许多攻击。从你给我们的代码来看,你似乎没有这个。

对于您的方案,您希望使用所谓的Post/Redirect/Get模式。在发布帖子后,此模式将确保将浏览器重定向到GET URL。这将确保用户不会两次提交表单。它还确保browseris指向新的URL。

要在Struts2中执行此操作,您必须使用Redirect Action Result。一个例子也是here

在你的情况下,这将是:

...
<action name="Login" class="LoginAction">

    <result name="input">login.jsp</result>
    <result name="success" type="redirect">
        <param name="actionName">displaySalesOrder</param>
        <param name="namespace">/yournamespace</param>
    </result>            
    <result name="error">messages.jsp</result>

</action>

<action name="main" class="MainAction"> 
    <result name="success">main.jsp</result>
</action>
...