Struts2-5 result详解

原创 2017年01月03日 17:03:24

  在struts.xml文件中,result节点是action节点的子节点,其代表action方法执行后可能去的一个目的地,即一个action节点可以配置多个result子节点;其name属性对应着action方法的一个返回值,而type属性表示结果的响应类型。


一、结果类型

  常用的结果响应类型主要有转发、重定向、转发到Action和重定向到Action,其在struts-default.xml文件中的定义如下:

<result-types>
    <!--常用4:转发到Action,即将控制权转发给后一个Action,而前一个Action的状态在后一个Action中依然保持注意其不能通过dispatcher的方式转发到Action-->  
    <!--注意:其不能通过dispatcher的方式转发到Action--> 
    <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
    <!--常用1:转发(默认值),即将控制权转发给应用程序中的指定资源,不能转发给外部资源-->     
    <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
    <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
    <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
    <!--常用2:重定向,即将响应重定向到另一个资源(可以是外部资源)-->  
    <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
    <!--常用3:重定向到Action,可设置actionNames、namespace、parse等参数--> 
    <!--注意:通过redirect也可间接重定向到Action,如/namaspace/actionName.do--> 
    <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
    <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
    <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
    <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
    <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
    <result-type name="postback" class="org.apache.struts2.dispatcher.PostbackResult" />
</result-types>

注意:可以采用另种方式重定向到Action,示例代码如下:

<!-- 重定向到Action 方式一 --!>
<result name="index" type="redirectAction">
    <param name="actionName">TestAction</param>
    <param name="namespace">/qiaobc</param>
</result>

<!-- 重定向到Action 方式二 --!>
<result name="index"  type="redirect">/qiaobc/TestAction.do</result>

二、通配符映射

  WEB应用中可能有成百上千个action声明,可以利用Struts2提供的通配符映射机制把多个彼此相似的映射关系进行简化合并。
  
  通配符映射规则:

  • 若找到多个匹配,没有通配符的匹配将胜出;
  • 若指定动作不存在,Struts2将尝试把该URI与包含通配符“*”的动作名进行匹配 ;
  • 被通配符匹配到的URI字符串的子串可以用{1}、{2}等来引用;其中,{1}匹配第一个子串,{2}匹配第二个子串……
  • {0}匹配整个URI;
  • 若Struts2找到的带有通配符的匹配不止一个,则按先后顺序进行匹配;
  • 可以匹配零个或多个字符,但不包括“/”字符(需要使用“**”),如果需要对字符进行转义,则需使用“\”。
<package name="struts2-app" namespace="/app" extends="struts-default">

    <action name="Book_add" class="org.simpleit.app.Book" method="add">
        <result>/WEB-INF/jsp/Book.jsp</result>
    </action>

    <action name="Book_delete" class="org.simpleit.app.Book" method="delete">
        <result>/WEB-INF/jsp/Book.jsp</result>
    </action>

    <action name="Author_add" class="org.simpleit.app.Author" method="add">
        <result>/WEB-INF/jsp/Book.jsp</result>
    </action>

    <action name="Author_delete" class="org.simpleit.app.Author" method="delete">
        <result>/WEB-INF/jsp/Book.jsp</result>
    </action>

    <!-- 以上四个action节点等价于: -->
    <action name="*_*" class="org.simpleit.app.{1}" method="{2}">
        <result>/WEB-INF/jsp/{1}.jsp</result>
    </action>

</package>

三、动态方法调用

  动态方法调用是通过URL动态调用Action中的方法;默认情况下,Struts2的动态方法调用功能处于禁用状态,需要通过配置常量的方式打开。
  如:“/struts-app2/Product.action”调用Product类的execute()方法,而可以通过“/struts-app2/Product!save.action”来直接调用Product类的save()方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Mybatis框架Result Maps解析

resultMap 元素是 MyBatis 中最重要最强大的元素。 如果你将它们和对等功能的 JDBC 代码来比较,你会 发现映射文件节省了大约 95%的代码量, 而且在一些情形下允许你做一些 JDB...
  • tayanxunhua
  • tayanxunhua
  • 2014年02月14日 11:25
  • 8817

深入详解Struts2——struts.xml配置之Result配置详解

一个result代表了一个可能的输出,当Action类的方法执行完成时,它返回一个字符串的结果码,框架根据这个结果码选择对应的result,向用户输出。 result元素有两个属性 name:指定...
  • fuyuwei2015
  • fuyuwei2015
  • 2015年10月26日 15:59
  • 763

学习笔记:struts2的package,action,result标签解析

package标签1. 类似于代码包,区别于不同的action,要配置action,必须首先写package标签,在package里面才能配置action 2.name属性 name属性值和功能...
  • Master_Spark
  • Master_Spark
  • 2017年05月13日 23:40
  • 214

result 详解

strutsactionredirectfreemarkervelocityclass 在struts2-core.jar/struts-default.xml中,我们可以找到关于result-typ...
  • StrutsFamily
  • StrutsFamily
  • 2014年11月27日 21:12
  • 905

struts2中result详解

1,Result原理  1) Result组件是Struts2中用于输出的组件,实际上就是Java代码。  2)Struts2中预制了10中类型的Result,这些Result什么在struts-de...
  • houfeng30920
  • houfeng30920
  • 2016年05月25日 13:17
  • 3777

Struts中struts.xml配置文件的主要元素(result)

结果类型视图(逻辑结果视图)前奏:该部分内容指的就是struts配置文件中的result元素的使用1、result元素作用:为动作指定结果视图 属性: name:逻辑视图的名称,对应着动作方法的返...
  • daliyuan350649623
  • daliyuan350649623
  • 2016年10月19日 17:34
  • 1406

struts框架中struts.xml中action标签中result标签的两个常用属性

result标签: name:默认值为"success" type: dispatcher服务器的跳转 redirect:客户端的跳转 redirectAction:客户端的ac...
  • qq208617107
  • qq208617107
  • 2016年04月15日 17:16
  • 204

struts2 result详解

1,Result原理  1) Result组件是Struts2中用于输出的组件,实际上就是Java代码。  2)Struts2中预制了10中类型的Result,这些Result什么在str...
  • qq_29663071
  • qq_29663071
  • 2016年11月09日 15:51
  • 93

Struts2-014-详解result节点

概述 result是action节点的子节点,每个 action 方法都将返回一个 String 类型的值, Struts 将根据这个值来决定响应什么结果. 每个 action 声明都必须包含有数量足...
  • qq_33605778
  • qq_33605778
  • 2017年11月08日 10:33
  • 165

Struts2配置文件 result详解

Struts2配置文件 result详解   转自:http://fangjuyue.blog.163.com/blog/static/2033550622012115114323777/ ...
  • vean_system
  • vean_system
  • 2012年05月18日 18:04
  • 2120
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2-5 result详解
举报原因:
原因补充:

(最多只允许输入30个字)