文档章节

周报-struts2 中chain、redirect、redirectaction的区别

李永china
 李永china
发布于 2016/07/06 09:07
字数 633
阅读 54
收藏 1

一。Chain Result:
这个result调用另外的一个action,连接自己的拦截器栈和result。

  • actionName (默认) - 被调用的action的名字
  • namespace - 被调用的action的名称空间. 如果名称空间为空,这默认为当前名称空间
  • method - 用于指定目标action的另一个方法被调用. 如果空,默认为excute方法

Redirect Action Result:
这个Result使用 ActionMapperFactory提供的ActionMapper来重定位浏览器的URL来调用指定的action和(可选 的)namespace. 这个Result比ServletRedirectResult要好.因为你不需要把URL编码成xwork.xml中配置的ActionMapper提 供的模式. 这就是说你可以在任意点上改变URL模式而不会影响你的应用程序. 因此强烈推荐使用这个Result而不是标准的redirect result来解决重定位到某个action的情况.

  • ActionName (默认) - 重定位到的action名
  • namespace - action的名称空间. 如果为null,则为当前名称空间
  •  

Redirect Result

调 用{@link HttpServletResponse#sendRedirect(String) sendRedirect}方法来转到指定的位置. HTTP响应被告知使浏览器直接跳转到指定的位置(产生客户端的一个新请求). 这样做的结果会使刚刚执行的action(包括action实例,action中的错误消息等)丢失, 不再可用. 这是因为action是建立在单线程模型基础上的. 传递数据的唯一方式就是通过Session或者可以为Ognl表达式的web参数(url?name=value)

  • location (默认) - action执行后跳转的地址.
  • parse - 默认为true. 如果设置为false, location参数不会被当作Ognl表达式解析.

 

二。当使用type=“redirectAction” 或type=“redirect”提交到一个action并且需要传递一个参数时。这里是有区别的:
a.使用type=“redirectAction”时,结果就只能写Action的配置名,不能带有后缀:“.action”
Java代码

 

<action name="Login" class="steven.actions.LoginAction">
<result name="success" type="redirectAction">User?u_id=${loginBean.u_id}</result>
</action>


b.使用type=“redirect”时,结果应是action配置名+后缀名
Java代码
 

<action name="Login" class="steven.actions.LoginAction">
<result name="success" type="redirect">User.action?u_id=${loginBean.u_id}</result>
</action> 


ps:1 redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失。
     2 redirect-action:action处理完后重定向到一个action,请求参数全部丢失,action处理结果也全部丢失。
     3 chain:action处理完后转发到一个action,请求参数全部丢失,action处理结果不会丢失。

© 著作权归作者所有

上一篇: Java Socket编程
下一篇: FileFilter过滤器
李永china
粉丝 11
博文 233
码字总数 174289
作品 0
朝阳
程序员
私信 提问
尚硅谷公开课--struts2--6--result

result ,即是struts.xml文件中action的一个子节点,每个action可以有多个result子节点,代表了一种action中execute方法的一种可能的返回值 共两个属性: name,type type表示结果的响应类型,...

小代码2016
2015/08/21
17
0
struts2 入门精讲(2)

struts.xml配置 1.constant 对象池 struts.objectFactory这个属性用于说明Struts2的 对象池创建工厂,Struts2也有自己的对象池,就像Spring那样,在配置文件中你可以引用对象池中的对象,你可...

南寒之星
2015/11/28
120
0
JFinal的跳转方式

像struts2里有redirect,dispatcher,redirectAction,chain,jfinal里的render系方法貌似都是dispatcher吧,如果我只是想redirect到一个页面或者action呢? @JFinal...

铂金小虫
2012/12/21
3.4K
2
Struts2 result type(结果类型)

在struts2框架中,当action处理完之后,就应该向用户返回结果信息,该任务被分为两部分:结果类型和结果本身。 Struts2框架提供的结果类型 已配置结果类型名 类 名 描 述 dispatcher org.apa...

不忘初心_xu
2016/01/28
118
0
Struts2中的Action链式处理

Struts2 (2.2.1)的Action中标签<result>可以通过多种方式跳转到另一个Action: <result type="redirect">ActionName</result> <result type="redirectAction">ActionName</result> <result ......

Storm.X
2010/12/07
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

Phpstorm2018 永久激活

1、安装phpstorm,安装包请自行官网下载 http://www.jetbrains.com/phpstorm/download/ 2、下载JetbrainsCrack.jar文件,存放至你的phpstorm执行文件同级目录下 下载JetbrainsCrack.jar 提取...

happyfish319
44分钟前
9
0
谈一谈Android进程间通信的几种方式

###来看一下Android中除了AIDL还有哪些进程间通信的方式: 1、Bundle Bundle实现了Parcelable,所以在Android中我们可以通过Intent在不同进程间传递Bundle数据。 但是在Intent 传输数据的过程...

二营长的意大利炮手
45分钟前
9
0
互联网薪资“高开低走”,你的能力是否真的可以匹配高薪?

对于国内外主流互联网大厂,技术出身似乎已经成为各大掌门人的必备标签。谷歌 CEO 桑达尔·皮查伊、马克·扎克伯格、李彦宏、马化腾、雷军等等皆为技术人出身,都曾参与了公司内部重要产品的...

Java技术剑
46分钟前
12
0
java 多线程

线程声明周期 线程的五个状态:新建,就绪,运行,阻塞,死亡。 其中就绪和运行两个状态客户互相转换,但运行到阻塞,阻塞到就绪,只能单向转换。 刚new出的线程就是【新建】状态,调用start...

雷开你的门
48分钟前
17
0
构造器Constructor是否可被overrid

构造器不能被重写,不能用static修饰构造器,只能用public private protected这三个权限修饰符,且不能有返回语句。

无名氏的程序员
52分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部