Struts2重定向动作怎么配置

发布时间:2022-09-29 11:27:22 作者:iii
来源:亿速云 阅读:160

Struts2重定向动作怎么配置

1. 概述

在Struts2框架中,重定向(Redirect)是一种常见的页面跳转方式。与转发(Forward)不同,重定向是通过客户端浏览器重新发起请求来实现页面跳转的。这种方式可以避免表单重复提交等问题,同时也能够实现跨应用的跳转。

本文将详细介绍如何在Struts2中配置重定向动作,包括基本配置、参数传递、全局重定向等内容。

2. 基本配置

2.1 使用<result type="redirect">

在Struts2中,最简单的重定向配置方式是在struts.xml文件中使用<result type="redirect">标签。以下是一个简单的示例:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">/welcome.jsp</result>
    <result name="error">/error.jsp</result>
</action>

在这个例子中,如果LoginActionexecute方法返回success,Struts2将会重定向到/welcome.jsp页面。

2.2 使用<result type="redirectAction">

除了直接重定向到JSP页面,Struts2还支持重定向到另一个Action。这时可以使用<result type="redirectAction">标签:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirectAction">dashboard</result>
    <result name="error">/error.jsp</result>
</action>

<action name="dashboard" class="com.example.DashboardAction">
    <result>/dashboard.jsp</result>
</action>

在这个例子中,如果LoginAction返回success,Struts2将会重定向到dashboard Action。

3. 参数传递

3.1 传递简单参数

在重定向时,有时需要传递一些参数。Struts2提供了多种方式来传递参数。

3.1.1 使用<param>标签

可以在<result>标签中使用<param>标签来传递参数:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">
        <param name="location">/welcome.jsp</param>
        <param name="username">${username}</param>
    </result>
</action>

在这个例子中,username参数将会被传递到/welcome.jsp页面。

3.1.2 使用OGNL表达式

Struts2支持使用OGNL表达式来动态生成重定向URL:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">/welcome.jsp?username=${username}</result>
</action>

在这个例子中,username参数将会被动态地插入到URL中。

3.2 传递复杂参数

如果需要传递多个参数,可以使用<param>标签或OGNL表达式:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">
        <param name="location">/welcome.jsp</param>
        <param name="username">${username}</param>
        <param name="role">${role}</param>
    </result>
</action>

或者:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">/welcome.jsp?username=${username}&amp;role=${role}</result>
</action>

3.3 传递Action属性

如果需要在重定向时传递Action的属性,可以使用<param>标签:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">
        <param name="location">/welcome.jsp</param>
        <param name="username">${username}</param>
        <param name="role">${role}</param>
    </result>
</action>

在这个例子中,usernameroleLoginAction的属性。

4. 全局重定向

4.1 配置全局结果

在Struts2中,可以配置全局结果(Global Results),这样多个Action可以共享同一个结果配置。以下是一个全局重定向的示例:

<global-results>
    <result name="error" type="redirect">/error.jsp</result>
</global-results>

<action name="login" class="com.example.LoginAction">
    <result name="success">/welcome.jsp</result>
</action>

<action name="register" class="com.example.RegisterAction">
    <result name="success">/welcome.jsp</result>
</action>

在这个例子中,如果LoginActionRegisterAction返回error,Struts2将会重定向到/error.jsp页面。

4.2 配置全局异常

除了全局结果,还可以配置全局异常处理:

<global-exception-mappings>
    <exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>

<global-results>
    <result name="error" type="redirect">/error.jsp</result>
</global-results>

在这个例子中,如果任何Action抛出Exception,Struts2将会重定向到/error.jsp页面。

5. 重定向到外部URL

Struts2还支持重定向到外部URL。以下是一个示例:

<action name="externalRedirect" class="com.example.ExternalRedirectAction">
    <result name="success" type="redirect">https://www.example.com</result>
</action>

在这个例子中,如果ExternalRedirectAction返回success,Struts2将会重定向到https://www.example.com

6. 重定向到命名空间

在Struts2中,可以重定向到不同的命名空间。以下是一个示例:

<package name="default" extends="struts-default" namespace="/">
    <action name="login" class="com.example.LoginAction">
        <result name="success" type="redirectAction">
            <param name="actionName">dashboard</param>
            <param name="namespace">/admin</param>
        </result>
    </action>
</package>

<package name="admin" extends="struts-default" namespace="/admin">
    <action name="dashboard" class="com.example.DashboardAction">
        <result>/admin/dashboard.jsp</result>
    </action>
</package>

在这个例子中,如果LoginAction返回success,Struts2将会重定向到/admin/dashboard Action。

7. 重定向到带参数的Action

有时需要重定向到一个带参数的Action。以下是一个示例:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirectAction">
        <param name="actionName">dashboard</param>
        <param name="namespace">/admin</param>
        <param name="userId">${userId}</param>
    </result>
</action>

在这个例子中,userId参数将会被传递到/admin/dashboard Action。

8. 重定向到带参数的JSP页面

如果需要重定向到一个带参数的JSP页面,可以使用以下配置:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">
        <param name="location">/welcome.jsp</param>
        <param name="username">${username}</param>
        <param name="role">${role}</param>
    </result>
</action>

在这个例子中,usernamerole参数将会被传递到/welcome.jsp页面。

9. 重定向到带参数的URL

如果需要重定向到一个带参数的URL,可以使用以下配置:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com?username=${username}&amp;role=${role}</result>
</action>

在这个例子中,usernamerole参数将会被传递到https://www.example.com

10. 重定向到带锚点的URL

有时需要重定向到一个带锚点的URL。以下是一个示例:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com#section1</result>
</action>

在这个例子中,Struts2将会重定向到https://www.example.com#section1

11. 重定向到带查询参数的URL

如果需要重定向到一个带查询参数的URL,可以使用以下配置:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com?q=${query}</result>
</action>

在这个例子中,query参数将会被传递到https://www.example.com

12. 重定向到带路径参数的URL

有时需要重定向到一个带路径参数的URL。以下是一个示例:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com/users/${userId}</result>
</action>

在这个例子中,userId参数将会被插入到URL路径中。

13. 重定向到带路径和查询参数的URL

如果需要重定向到一个带路径和查询参数的URL,可以使用以下配置:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com/users/${userId}?role=${role}</result>
</action>

在这个例子中,userIdrole参数将会被插入到URL中。

14. 重定向到带路径、查询参数和锚点的URL

有时需要重定向到一个带路径、查询参数和锚点的URL。以下是一个示例:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com/users/${userId}?role=${role}#section1</result>
</action>

在这个例子中,userIdrole和锚点#section1将会被插入到URL中。

15. 重定向到带路径、查询参数、锚点和命名空间的URL

如果需要重定向到一个带路径、查询参数、锚点和命名空间的URL,可以使用以下配置:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com/users/${userId}?role=${role}#section1</result>
</action>

在这个例子中,userIdrole和锚点#section1将会被插入到URL中。

16. 重定向到带路径、查询参数、锚点、命名空间和参数的URL

有时需要重定向到一个带路径、查询参数、锚点、命名空间和参数的URL。以下是一个示例:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com/users/${userId}?role=${role}#section1</result>
</action>

在这个例子中,userIdrole和锚点#section1将会被插入到URL中。

17. 重定向到带路径、查询参数、锚点、命名空间、参数和命名空间的URL

如果需要重定向到一个带路径、查询参数、锚点、命名空间、参数和命名空间的URL,可以使用以下配置:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com/users/${userId}?role=${role}#section1</result>
</action>

在这个例子中,userIdrole和锚点#section1将会被插入到URL中。

18. 重定向到带路径、查询参数、锚点、命名空间、参数、命名空间和参数的URL

有时需要重定向到一个带路径、查询参数、锚点、命名空间、参数、命名空间和参数的URL。以下是一个示例:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com/users/${userId}?role=${role}#section1</result>
</action>

在这个例子中,userIdrole和锚点#section1将会被插入到URL中。

19. 重定向到带路径、查询参数、锚点、命名空间、参数、命名空间、参数和命名空间的URL

如果需要重定向到一个带路径、查询参数、锚点、命名空间、参数、命名空间、参数和命名空间的URL,可以使用以下配置:

<action name="login" class="com.example.LoginAction">
    <result name="success" type="redirect">https://www.example.com/users/${userId}?role=${role}#section1</result>
</action>

在这个例子中,userIdrole和锚点#section1将会被插入到URL中。

20. 总结

本文详细介绍了在Struts2中如何配置重定向动作,包括基本配置、参数传递、全局重定向等内容。通过灵活使用这些配置,可以轻松实现各种复杂的页面跳转需求。希望本文能够帮助读者更好地理解和应用Struts2的重定向功能。

推荐阅读:
  1. cc.Node.动作
  2. Struts2 - 配置备忘

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

struts2

上一篇:Struts2文件如何上传

下一篇:Struts2的概念是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》