`
coolerbaosi
  • 浏览: 727807 次
文章分类
社区版块
存档分类
最新评论

struts2的result结果类型

 
阅读更多
提交服务器处理业务后结果返回页面的处理,Struts2提供了对不同种类返回结果的支持,常见的有JSP,FreeMarker,Velocity等。

struts.xml配置文件中result的语法:<result name="" type="">xxxxx</result>

Struts2支持的不同类型的返回结果为:

Chain Result-->type="chain"
用来处理Action链

Dispatcher Result -->type="dispatcher"
用来转向页面,通常处理JSP

FreeMarker Result -->type="freemarker"
处理FreeMarker模板

HttpHeader Result -->type="httpheader"
用来控制特殊的Http行为

Redirect Result -->type="redirect"
重定向到一个URL

Redirect Action Result -->type="redirectAction"
重定向到一个Action

Stream Result -->type="stream"
向浏览器发送InputSream对象,通常用来处理文件下载

Velocity Result -->type="velocity"
处理Velocity模板

XLST Result -->type="xslt"
处理XML/XLST模板

PlainText Result -->type="plainText"
显示原始文件内容,例如文件源代码


另外第三方的result类型还包括JasperReports Plugin,专门用来处理JasperReport类型的报表输出。

在struts-default.xml文件中已经有了对于所有类型Result的定义:

Java 代码

1. <result-types>
2.
3. <result-type name="chain"
4.
5. class="com.opensymphony.xwork2.ActionChainResult"/>
6.
7. <result-type name="dispatcher"
8.
9. class="org.apache.struts2.dispatcher.ServletDispatcherResult"
10.
11. default="true"/>
12.
13. <result-type name="freemarker"
14.
15. class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
16.
17. <result-type name="httpheader"
18.
19. class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
20.
21. <result-type name="redirect"
22.
23. class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
24.
25. <result-type name="redirectAction"
26.
27. class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
28.
29. <result-type name="stream"
30.
31. class="org.apache.struts2.dispatcher.StreamResult"/>
32.
33. <result-type name="velocity"
34.
35. class="org.apache.struts2.dispatcher.VelocityResult"/>
36.
37. <result-type name="xslt"
38.
39. class="org.apache.struts2.views.xslt.XSLTResult"/>
40.
41. <result-type name="plainText"
42.
43. class="org.apache.struts2.dispatcher.PlainTextResult" />
44.
45. <!-- Deprecated name form scheduled for removal in Struts 2.1.0.
46.
47. The camelCase versions are preferred. See ww-1707 -->
48.
49. <result-type name="redirect-action"
50.
51. class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
52.
53. <result-type name="plaintext"
54.
55. class="org.apache.struts2.dispatcher.PlainTextResult" />
56.
57. </result-types>

<result-types>

<result-type name="chain"

class="com.opensymphony.xwork2.ActionChainResult"/>

<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"/>

<result-type name="redirect"

class="org.apache.struts2.dispatcher.ServletRedirectResult"/>

<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" />

<!-- Deprecated name form scheduled for removal in Struts 2.1.0.

The camelCase versions are preferred. See ww-1707 -->

<result-type name="redirect-action"

class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>

<result-type name="plaintext"

class="org.apache.struts2.dispatcher.PlainTextResult" />

</result-types>



从上述代码中可以看出在不指定Result类型的时候默认使用dispatcher类型。


定义一个Result值,

Java 代码

1. <result name="success" type="dispatcher">
2.
3. <param name="location">/myjsp.jsp</param>
4.
5. </result>

<result name="success" type="dispatcher">

<param name="location">/myjsp.jsp</param>

</result>


由于type默认值是dispatcher,所以这里不需要定义,另外name的默认值为success所以这里也不需要定义。
上述代码可以简写为:

Java 代码

1. <result>
2.
3. <param name="location">/myjsp.jsp</param>
4.
5. </result>

<result>

<param name="location">/myjsp.jsp</param>

</result>




另外location参数也可以直接卸载result标签内部(也就是无需再result里面使用),所以上述代码的最简单的写法为:

Java 代码

1. <result>/myjsp.jsp</result>

<result>/myjsp.jsp</result>



我们也可以定义多个不同的result

Java 代码

1. <action name="Hello">
2.
3. <result>/hello/hello.jsp</result>
4.
5. <result name="error">/hello/error.jsp</result>
6.
7. <result name="input">/hello/input.jsp</result>
8.
9. </action>

<action name="Hello">

<result>/hello/hello.jsp</result>

<result name="error">/hello/error.jsp</result>

<result name="input">/hello/input.jsp</result>

</action>



上 述代码的含义为,名字为Hello的Action有三个返回结果,并且都是 dispatcher类型(默认类型),这三个返回值的名字分别为success(默认值),error,input(当输入不通过时,action 方法返回input),对应的页面的路径分别为 /hello/result.jsp,/hello/error.jsp,/hello/input.jsp。

有些时候我们需要一个定义在全局的result,这个时候我们可以在package内部定义全局的result,例如:

Java 代码

1. <global-results>
2.
3. <result name="error">/error.jsp</result>
4.
5. <result name="invalid.token">/error.jsp</result>
6.
7. <result name="login" type="redirect-action">login!input</result>
8.
9. </global-results>

<global-results>

<result name="error">/error.jsp</result>

<result name="invalid.token">/error.jsp</result>

<result name="login" type="redirect-action">login!input</result>

</global-results>



动态返回结果

有些时候,只有当Action执行完璧的时候我们才知道要返回哪个结果,这个时候我们可以在Action内部定义一个属性,这个属性用来存储 Action执行完璧之后的Result值,例如:

Java 代码

1. private String nextAction;
2.
3. public String getNextAction() {
4.
5. return nextAction;
6.
7. }

private String nextAction;

public String getNextAction() {

return nextAction;

}



在strutx.xml配置文件中,我们可以使用${nextAction}来引用到Action中的属性,通过${nextAction}表示的内容来动态的返回结果,例如:

Java 代码

1. <action name="fragment" class="FragmentAction">
2.
3. <result name="next" type="redirect-action">${nextAction}</result>
4.
5. </action>

<action name="fragment" class="FragmentAction">

<result name="next" type="redirect-action">${nextAction}</result>

</action>



上述Action的execute方法返回next的时候,还需要根据nextAction的属性来判断具体定位到哪个Action。


在struts.xml配置文件中,我们可以使用method=""来设置调用类的哪个方法,这样就可以在一个JAVA类中使用不同的方法来实现不同的功能,就无需每个功能写一类了,例如:
Java 代码

1. <action name="fragment" class="cn.com.web.FragmentAction" method="add">
2. <result>/success.jsp</result>
3. </action>
分享到:
评论

相关推荐

    struts2 Result类型

    NULL 博文链接:https://cdxs2.iteye.com/blog/1926350

    struts2中result类型之redirect

    struts2中result类型之redirect,重定向

    Struts2 Result类型

    Struts2 Result类型,整理的非常详细!

    struts2中result类型之redirectAction

    struts2中result类型之redirectAction

    Struts2_result返回类型

    在struts2的返回结果配置中,我们大部分情况使用默认的或者chain或者redirect,其实struts2还有很多其他类型的,今天我们就来看一下都有哪些类型。 打开struts2的源码中struts-default.xml文件,我们能看到如下配置

    struts2中常用Result类型(type)的用法和出现的问题

    struts2 常用Result类型(type)的用法 Invalid result location value/parameter错误的解决办法

    struts2中的result的type类型

    struts2 跳转类型 result type chain dispatcher redirect redirect action

    struts2 Demo

    这是一个struts2框架的处理流程的demo,里面有...struts2 result type类型的基本解释图片;相信对于初学者,通过这个demo可以基本掌握struts2的使用,注意,该demo是纯粹的struts2,没有其他框架内容,请注意甄别......

    struts2的XSLTResult结果类型

    NULL 博文链接:https://changer0702.iteye.com/blog/669344

    Struts 2.0结果集类型

    Struts2.0 2结果集类型的用法

    Struts2中的Result的使用

    Struts2中的Result的使用类型有很多种,以及各种结果集类型的应用都有涉及(我们老师上课讲的讲义,希望对初学WEB的同学有所帮助)

    struts2_strus.xml中result类型及含义详解

    针对struts2对result配置的各种类型详解

    Struts2 Result 返回JSON对象详解

    主要讲解Struts2返回JSON对象的两种方式,讲的比较详细,希望能给大家做一个参考。

    Struts2--result配置的各种视图转发类型

    NULL 博文链接:https://huangminwen.iteye.com/blog/996219

    Struts2详解,Struts2与Struts1的区别

    Struts2和Struts1的常见区别 二. Struts2入门 3. 快速配置Struts2环境 4. 开发一个Struts2简单实例 5. struts.xml文件 三. Struts2深入开发 6. 常用标签配置和使用 7. 常用&lt;result&gt;标签配置和使用 8....

    Struts2 in action中文版

    8.1.1 页面上:如何使用自定义结果组件构建Struts 2 Ajax应用程序 171 8.1.2 实现JSON结果类型 173 8.2 常用的结果类型 180 8.2.1 RequestDispatcher,也叫做dispatcher 180 8.2.2 ServletRedirectResult,也叫做...

    Struts2入门教程(全新完整版)

    org.apache.struts2.views.freemarker.FreemarkerResult 16 httpheader 16 控制特殊http行为的结果类型 16 org.apache.struts2.dispatcher.HttpHeaderResult 16 stream 16 向浏览器发送InputSream对象,通常用来处理...

    Struts2 学习笔记

    一、 Result类型 (type) 19 二、 全局结果集(Globle Result) 20 三、 动态的结果集(dynamic result) 21 四、 带参数的结果集 21 五、 Result总结 22 六、 项目经理: 22 03 OGNL表达式语言 23 04 Struts2-Tags 28 ...

    Struts2属性文件详解

    该属性指定Struts 2的类型检测机制, 通常支持tiger和notiger两个属性值. struts.multipart.parser 该属性指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该属性支持cos,pell和jakarta等属 性值, 即...

    Struts2 国际化字符串 拦截器

    下面让我们来做一个Velocity模板输出的例子,首先在classes/struts.xml中新建一个Action映射(Mapping),将其result类型设为velocity,如以下代码所示: &lt;result type="velocity"&gt;/HelloWorld.vm&lt;/result&gt; 例3 ...

Global site tag (gtag.js) - Google Analytics