我在我的应用程序中使用Struts2。在我的应用程序中,我有一个登录表单和一个主页面。成功登录后,我调用主页面,在主页面内我调用了另一个操作。到目前为止,一切正常,登录成功后页面也会显示,但是当我按下F5
或点击浏览器刷新按钮时,它会给我登录页面,但我想要点击同一页面{{1}或刷新按钮。我怎样才能做到这一点,我的F5
如下......
...
struts.xml
...
登录后我调用main.jsp并从main.jsp调用 mytable 操作。在向我显示主页面后,浏览器的地址栏仍显示登录操作
所以请帮助我如何保持会话。
答案 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>
...