内容源自:Struts2中的页面跳转

一、全局页面的设置
如果<package>包中的一些action都返回success,并且返回的页面都是同一个JSP页面,这样就可以配置全局的结果页面。
全局结果页面针对的当前的包中的所有的Action,但是如果局部还有结果页面,会优先局部的。
设置全局页面的标签是

<global-results>
<result>/demo/suc.jsp</result>
</global-results>

局部结果页面

<result>/demo/suc.jsp</result>

二、页面跳转类型
实际上在Struts2框架中,一个完整的结果视图配置文件应该是:

<action name="Action名称" class="Action类路径" method="方法名">
<result name="逻辑视图名称" type="结果类型">
<param name="参数名称">参数值</param>
</result>
</action>

其中的type就是页面跳转类型。
Struts2中支持多种页面跳转类型,常见的结果类型去struts-default.xml中查找。
结果页面使用<result>标签进行配置,包含两个属性:
name  -- 逻辑视图的名称
type  -- 跳转的类型,一些常用的类型如下。

1、dispatcher        
这种方式是struts2中默认的转发类型,即内部请求转发,类似于forward的方式。用于指定使用JSP作为视图的结果类型。 Action--->JSP

2、redirect          
重定向. Action--->JSP或者Action
用于直接跳转到其他URL的结果类型。
1)这种结果类型与dispatcher结果类相对,dispatcher结果类型是将请求forword(转发)到指定的JSP资源;而redirect结果类型,则意味着将请求redirect(重定向)到指定的视图资源。
2)dispatcher与redirect的差别就是重定向和转发的差别:重定向会丢失所以的参数、请求属性--当然也就丢失了Action的出来结果。
3)使用redirect结果类型的效果是,系统将调用HttpServletResponse的sendRedirect(String)方法来重定向指定视图资源,这种重定向的效果就是重新产生一个请求,因此所有的请求参数、请求属性、Action实例和Action中封装的属性全部丢失。地址栏的URL会发生改变。
4)配置一个redirect类型结果,可以指定如下两个参数。
location:改参数指定Action处理完用户请求后跳转的地址。
parse:改参数指定是否允许在location参数值中使用表达式,改参数默认为true。与前面的类似,通常无需指定parse属性值。
5)使用这个类型也可以指定跳到一个Action,只是需要添加.action后缀,已达到redirectAction结果类型效果。

重定向到jsp

<action name="redirect">
<result type="redirect">/add.jsp</result>
</action>

重定向到action

<action name="redirect">
<result type="redirect">addUser.action</result>
</action>

3、redirectAction    
1)这种方式可以简单的理解成转向到另一个Action。这种配置往往在下面的情况下需要用到:例如,当管理员添加完一个用户后,系统自动跳转到用户列表的界面。
2)这种结果类型与redirect类型非常相似,一样是重新生成一个全新的请求。但与redirect结果类型区别在于:redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求。
3)配置一个redirect类型的结果,可以指定如下两个参数。(针对不在同一个配置文件中)
actionName:该参数指定重定向的Action名。
namespace:该参数需要指定需要重定向的Action所在命名空间。

<action name="redirectAction">
<result type="redirectAction">listAction</result>
</action>

该action必须和redirectAction处在同一个package下面。那么如果不在同一个包下,则需进行如下配置:

<result type="redirectAction">
<param name="actionName">XXX</param>
<param name="namespace">YYY</param>
</result>

4)使用redirectAction结果类型时,系统将重新生成一个请求,只是改请求的URL不是一个具体的视图资源,而是另一个Action。因此前一个Action处理结果、请求参数、请求属性会全部丢失。

4、chain             
多个action之间跳转.从一个Action转发到另一个Action.  Action--->Action
注意: 不能通过 type=dispatcher 的方式转发到一个 Action

例如:

<result name="test" type="chain">/com.chen/testAction.action</result>

而以下方式错误:

<result name="test" type="dispatcher">/com.chen/testAction.action</result>

chain也用了跳转到另一个Action,与前面的不同的是,他的请求参数和属性都可以保留,比如,系统中的删除功能,回到之前查询的action,要保存页码回到之前删除记录的当前页,用chain就可以做到,几乎就是前面两种的增强版。推荐开发中直接忽略redirect和redirectAction类型,直接用这个chain就好了。

5、stream            -- 文件下载时候使用的.

三、关于页面冲突
当使用一个Action标签完成多个Action配置时,可能会出现Input结果视图冲突的情况。也就是说,在不同逻辑中跳入的input逻辑视图是同一个,此时我们可以在自己的Action方法上加上 @InputConfig(resultName="逻辑视图的名称")的注解然后再在Result中配置即可。

Struts2中的页面跳转的更多相关文章

  1. [Xcode 实际操作]九、实用进阶-(23)多个Storyboard故事板中的页面跳转

    目录:[Swift]Xcode实际操作 本文将演示多个Storyboard故事板中的页面跳转. 使用快捷键[Command]+[N]创建一个新的故事板文件. (在项目文件夹[DemoApp]上点击鼠标 ...

  2. php中的页面跳转和重定向

    php中的页面跳转和重定向 ThinkPHP中跳转和重定向的区别 跳转: 浏览器认为: 当前URL请求成功, 重新请求新的URL. 浏览器会 记录当前的URL 和 新的URL 在请求历史记录中. 回退 ...

  3. web项目中实现页面跳转的两种方式

    <a href="javascript:"></a>跳转在网页本身,URL不改变 <a href="#"></a> ...

  4. WEB开发中的页面跳转方法总结

    PHP header()函数跳转 PHP的header()函数非常强大,其中在页面url跳转方面也调用简单,使用header()直接跳转到指定url页面,这时页面跳转是302重定向: $url = & ...

  5. js中实现页面跳转

    1.在本页中跳转到指定页面 1.window.location.href方式    <script language="javascript" type="text ...

  6. php开发中的页面跳转方法总结

    PHP页面跳转实现的功能就是将网站中一个网页跳转到另一个网页中.对于刚刚学习PHP语言的朋友来说,是必须要掌握的基础方法. 页面跳转可能是由于用户单击链接.按钮等触发的,也可能是系统自动产生的.页面自 ...

  7. 关于在Android中Activity页面跳转的方法

    一.无返回结果的页面跳转 1.创建两个类FActivity.java和SActivity.java 2.创建两个layout目录下的factivity.xml和sactivity.xml 3.在And ...

  8. js中实现页面跳转(返回前一页、后一页)

    一:JS 重载页面,本地刷新,返回上一页 代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a ...

  9. SpringMVC中遇到页面跳转出现404错误的问题

    今天遇到了一个问题: 使用SpringMVC时,出现页面无法跳转的情况(404错误), 出现这个异常的原因在于SpringMVC的配置文件中控制器的配置书写错误: 原代码: <context:c ...

随机推荐

  1. 很好用的谷歌字体以及Gravatar头像一键替换WordPress插件----WP Acceleration for China 插件

    WordPress总是被新上手的朋友诟病说速度慢,其实多半都要归功于谷歌字体的功劳.在应对字体这个问题的时候,大家都会有各种不同的解决方案.今天我给大家推荐一款插件,它集合了多个替代方案,可以方便的替 ...

  2. VS Code开发技巧集锦

    2016 年 9 月 23-24 日,由 CSDN 和创新工场联合主办的“MDCC 2016 移动开发者大会? 中国”(Mobile Developer Conference China)将在北京? ...

  3. 日志 log4net

    先引入log4net 接着配置configuration文件 <?xml version="1.0"?><configuration> <system ...

  4. 141. Linked List Cycle【Easy】【判断链表是否存在环】

    Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked lis ...

  5. SpringBoot整合Quartz作为调度中心完整实用例子

    因为想要做一个类似于调度中心的东西,定时执行一些Job(通常是一些自定义程序或者可执行的jar包),搭了一个例子,总结了前辈们的相关经验和自己的一些理解,如有雷同或不当之处,望各位大佬见谅和帮忙指正. ...

  6. [转载]开发 Spring 自定义视图和视图解析器

    原文出处 http://www.ibm.com/developerworks/cn/java/j-lo-springview/ 概述 Spring 3.0 默认包含了多种视图和视图解析器,比如 JSP ...

  7. 洛谷—— P1908 逆序对

    https://www.luogu.org/problem/show?pid=1908 题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏, ...

  8. 洛谷——P1109 学生分组

    P1109 学生分组 题目描述 有N组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界R和下界L(L<=R),每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以使 ...

  9. mysql无法输入中文排错

    题记:以前都是使用可视化界面创建数据库,进行操作的,但是今天使用cmd窗口进行操作发现出错了. 以前记得自己使用cmd也是可以正确操作的,但是这次却出错了,在网上找了很多解决的办法,最后还是靠自己慢慢 ...

  10. 【Kubernetes】在K8s中创建StatefulSet

    在K8s中创建StatefulSet 遇到的问题: 使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个 ...