Struts 2 - 重定向页面并显示不同的URL

时间:2014-01-17 05:59:52

标签: java struts2

我正在为我的网络应用程序使用Struts 2并使用身份验证部分。我想知道何时重定向页面(操作),如何更改显示的重定向到的URL而不是从?

例如,我有一个login.action页面,它将提交给authentication.action,如果用户名和密码正确,它将被重定向到securePage.action。

我知道如何进行重定向部分(我尝试了chain和redirectAction结果类型)。我想要的是当页面被重定向到安全页面时,URL将显示.... / securePage.action。现在,它仍然是带有会话ID的authentication.action。

我正在分享我的struts.xml部分

                                                                                   

 <action name="login">
    <result>index.jsp</result>
 </action>
 <action name="authentication" class="com.myapp.action.AuthenticationAction">
    <result name="success" type="chain">hello</result>
    <result name="failure">index.jsp</result>
 </action>
  <action name="hello" 
        class="com.myapp.action.HelloWorldAction" 
        method="execute">
        <interceptor-ref name="myDefault"/>
        <result name="success">/HelloWorld.jsp</result>
        <result name="failure">index.jsp</result>
  </action>

login.action将打开index.jsp,这是将提交给身份验证的登录

身份验证的操作类只需从登录中获取用户名和密码,如果通过则将会话值设置为“authorized”,如果用户名和密码不匹配,则设置会重定向。

然后,

身份验证将使用结果类型链重定向到hello(安全页面)。

hello的操作使用我自己的authInterceptor来检查会话值 - 当前会话是否被授权。如果没有,请返回登录。

2 个答案:

答案 0 :(得分:1)

尝试使用type="chain"

的推荐方法,而不是使用type="redirectAction"

将当前的链操作更改为

<action name="authentication" class="com.myapp.action.AuthenticationAction">
    <result name="success" type="redirectAction">
        <param name="actionName">hello</param>
        <param name="namespace">/</param>
    </result>
    <result name="failure">index.jsp</result>
</action>
<action name="hello" 
    class="com.myapp.action.HelloWorldAction" 
    method="execute">
    <interceptor-ref name="myDefault"/>
    <result name="success">/HelloWorld.jsp</result>
    <result name="failure">index.jsp</result>
</action>

有关详细信息,请查看文档here

答案 1 :(得分:0)

您可以在您的 struts.xml 中使用以下内容,您可以找到您的 Apache Docs Reference here

<struts>
.
.
<constant name="struts.action.extension" value="" /> 
.
.
</struts>