2013年2月18日 天气晴

地点:家    寒假倒计时

Struts 2 第15part Result Types(结果类型)

上一环节是关于Action的学习,这一环节是关于Result的学习。

关于Result结果集,想必很多稍微接触过Struts2的童鞋都应该知道的,比如在Action类当中返回字符串SUCCESS到sturts.xml配置文件当中,并直接跳转到相应页面,这是我们最熟悉的了。但关于struts2的结果集并没有那么简单,它还有其他类型的结果集。下面是小巫从官网截下来的一个文档,详细信息可以访问URL:http://struts.apache.org/development/2.x/docs/action-chaining.html

 

关于上面这张图,我稍微用自己不能引以为豪的烂英语翻译一下吧:

(1)Chain Result :用于Action的链式处理

(2)Dispacher Result:用于Web资源的整合,包括JSP的整合。这是默认的结果集。

(3)FreeMarker Result:用于FreeMarker的整合。

(4)HttpHeader Result:用于控制特殊的Http行为。

(5)Redirect Result:用于直接跳转另外一个URL(web资源)。

(6)Redirect Action Result: 用于直接跳转到其他Action。

(7)Stream Result:用于向浏览器返回一个InputStream,通常用于文件下载。

(8)Velocity Result:用于与Velocity的整合。

(9)XSL Result:用于与XML/XSLT整合的结果类型。

(10)PlainText Result:用于显示某个页面的源代码。

(11)Tiles Result:提供与Tiles的整合。

 

那好,关于Struts2的结果类型差不多就是以上11种,有些常用的比如Dispacher、Redirect等。

在官方文档中,都有详细的实例和说明,小巫不能一一翻出来,小巫也处于学习状态,菜鸟级别,有需要的可以到官网查看。

下面是一个简单的实例:Struts2_ResultType

首先来看index.jsp


  
  1. <?xml version="1.0" encoding="GB18030" ?> 
  2. <%@ page language="java" contentType="text/html; charset=GB18030" 
  3.     pageEncoding="GB18030"%> 
  4.  
  5. <% String context = request.getContextPath(); %> 
  6.  
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  8. <html xmlns="http://www.w3.org/1999/xhtml"> 
  9. <head> 
  10. <meta http-equiv="Content-Type" content="text/html; charset=GB18030" /> 
  11. <title>Insert title here</title> 
  12. </head> 
  13. <body> 
  14. Result类型  
  15. <ol> 
  16.     <li><a href="r/r1">dispatcher</a></li> 
  17.     <li><a href="r/r2">redirect</a></li> 
  18.     <li><a href="r/r3">chain</a></li> 
  19.     <li><a href="r/r4">redirectAction</a></li> 
  20.     <li>freemarker</li> 
  21.     <li>httpheader</li> 
  22.     <li>stream</li> 
  23.     <li>velocity</li> 
  24.     <li>xslt</li> 
  25.     <li>plaintext</li> 
  26.     <li>tiles</li> 
  27. </ol> 
  28.       
  29. </body> 
  30. </html> 

只做了前面4中类型的Result, 都是链接到命名空间为r下的action当中。

这四个链接会分别显示什么效果呢?

先来看看配置文件struts.xml


  
  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd"> 
  5.  
  6. <struts> 
  7.     <constant name="struts.devMode" value="true" /> 
  8.     <package name="resultTypes" namespace="/r" extends="struts-default"> 
  9.         <action name="r1"> 
  10.             <result type="dispatcher">/r1.jsp</result> 
  11.         </action> 
  12.           
  13.         <action name="r2"> 
  14.             <result type="redirect">/r2.jsp</result> 
  15.         </action> 
  16.           
  17.        <action name="r3"> 
  18.             <result type="chain"> 
  19.                 <param name="actionName">r1</param> 
  20.                 <param name="namespace">/r</param> 
  21.             </result> 
  22.         </action> 
  23.           
  24.         <action name="r4"> 
  25.             <result type="redirectAction"> 
  26.                 <param name="actionName">r2</param> 
  27.                 <param name="namespace">/r</param> 
  28.             </result> 
  29.         </action> 
  30.     </package> 
  31. </struts> 

这里先说明一下,可能因为Struts2本身的修正,有些东西被摒弃了,所以才会报错,就拿上面的chain类型的结果集来说,如果没有增加多两行参数,一个是actionName,一个是namespace,那就会报错滴。后来修正过来也就没问题了。

 

现在说明一下这个实例的跳转效果:

(1)dispacher:直接跳转到r1.jsp,显示路径为:http://localhost:8080/Struts2_ResultType/r/r1

(2)redirect:直接跳转到r2.jsp,显示路径为:http://localhost:8080/Struts2_ResultType/r2.jsp

(3)chain:间接跳转到r1.jsp,显示路径为:http://localhost:8080/Struts2_ResultType/r/r3

(4)redirect Action:间接跳转到r2.jsp,显示路径为http://localhost:8080/Struts2_ResultType/r2.jsp

 

关于Result Type就总结到这里。进入下一part,Global Result.