3.2. 处理结果类型:
Struts2提供了对不同种类返回结果的支持,常见的有JSP,FreeMarker,Velocity等。Struts2支持的不同类型的返回结果为:(大字体为常用)
|名字|说明|
|---|---|
|chain
|用来处理Action链
|
|dispatcher|用来转向页面,通常处理JSP,这是默认的结果类型|
|freeMarker
|处理FreeMarker模板
|
|httpHeader
|用来控制特殊的Http行为
|
|redirect|重定向到一个URL|
|redirect-action|重定向到一个Action|
|stream
|向浏览器发送InputSream对象,通常用来处理文件下载
|
|velocity
|处理Velocity模板
|
|xslt
|处理XML/XLST模板
|
|plaintext
|显示原始文件内容,例如文件源代码
|
|tiles
|结合Tile使用
|
另外第三方的Result类型还包括JasperReports Plugin,专门用来处理JasperReport类型的报表输出;Jfreechart Plugin;JSF Plugin。
常用示列:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" >
<struts>
<package name="struts2" extends="struts-default">
<!-- 默认Action -->
<default-action-ref name="defaultAction"></default-action-ref>
<!-- 全局结果可满足一个包中多个Action共享一个结果,也就是说,当多个Action中都有一个重复的result时就可以使用全局结果,也就是说公共的result
<global-results>
<result name="fruitPage" type="dispatcher" >/fruit.jsp</result>
</global-results> -->
<action name="defaultAction">
<result>/error.jsp</result>
</action>
<!-- 通配符映射(wildcard mappings) -->
<action name="*Action" class="com.struts.ComputeAction" method="{1}" >
<!--1
表达式{1}也可以写在url连接中,class,name中都可以写,也可以写多少,索引从1开始
<result name="fruitPage" >/{1}.jsp</result> -->
<!--2
默认dispatcher转发跳转
<result name="fruitPage" type="dispatcher" >/fruit.jsp</result> -->
<!--3
重定向跳转
<result name="fruitPage" type="redirect" >/fruit.jsp</result> -->
<!--4
redirectAction: Action实例 与另一个Action实例互相跳转
<result name="fruitPage" type="redirectAction" >skipAction</result> -->
<!--4.1
使用感叹号指定跳转方法,xml会显示报错,但可以用。 使用?&不能在Action实例中带参数
<result name="fruitPage" type="redirectAction" >skipAction!add</result> -->
<!--4.2
跳转Action带参数的方式:
actionName:跳转Action的名称
method:跳转Action实例中的哪个方法
num:带的参数,可写固定,可使用${属性名}取上一个Action实例中的属性,实现动态传值。
-->
<result name="fruitPage" type="redirectAction" >
<param name="actionName">skipAction</param>
<param name="method">add</param>
<param name="num1">${num1}</param>
<param name="num2">${num2}</param>
</result>
</action>
<action name="skipAction" class="com.struts.SkipAction" >
<result name="success" type="dispatcher" >/fruit.jsp</result>
</action>
</package>
</struts>