请选择 进入手机版 | 继续访问电脑版
本站特色:极好的技术研究氛围!所有技术发帖,必有回复! 做最受欢迎的Java论坛

疯狂Java联盟

 找回密码
 加入联盟
查看: 126|回复: 0

Struts2连载(11)-- Result类型详解

[复制链接]
发表于 2018-2-12 20:14:25 | 显示全部楼层 |阅读模式
更多Struts2的知识请参考李刚老师著作《Struts 2.x权威指南(第3版)》

京东购买地址:https://item.jd.com/11105100.html

Result就是指定 action处理完毕以后,使用什么方式响应客户端.
以前的MVC模式:
(1)Servlet(控制器)调用Model处理完用户请求之后,
(2)request.getRequestDispatcher("/abc.jsp").forward(request,response)
这种方式下,坏处:
        跳转代码,已经写死跳转到某个物理视图。(硬编码与物理视图资源耦合)
        在未来的日子里,软件可能要跳转到其他页面(甚至不再使用JSP视图),
        如果你是硬编码耦合,必然需要手动修改代码。

Struts 2的做法:
  (1) Action调用Model处理完用户请求之后。 只是返回了一个String类型的逻辑视图名。
   (2) 然后在struts.xml文件通过<result.../>元素定义了“逻辑视图名”
             与物理视图之间的对应关系。
             这样就把原来的硬编码耦合,提取到XML配置文件中进行管理。

     逻辑视图名与物理视图的关系,是通过<result.../>元素来管理。
     标准的result格式:
  1.      <result name="" type="">
  2.           <param> </param>
  3.           <param> </param>
  4.           ...
  5.      </result>
复制代码



      支持如下属性
     - name :指定逻辑视图名。默认是success。
     - type :指定你所使用的物理视图类型。默认值就是dispatcher。

     如有如下result配置:
  1.      <result name="逻辑视图名" type="视图类型">
  2.     <param name="location">物理视图的位置</param>
  3.         <param name="parse">true</param> ——是否解析OGNL表达式的值。
  4.      </result>
复制代码


       就可以简化为如下写法:
  1.      <result name="逻辑视图名" type="视图类型">物理视图的位置</result>
复制代码



      在struts-default.xml文件中的 struts-default抽象包中
  1. <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
  2. <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
  3. <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
  4. <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
  5. <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
  6. <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
  7. <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
  8. <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
  9. <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
  10. <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
复制代码



Result的类型
1.dispatcher
  --默认,应用服务器跳转,forward到一个页面jsp、html、freemarker
2.redirect
  --客户端跳转,直接“重定向”到新的URL。 会生成一次新的请求,原有的请求参数、请求属性都会丢失。
    与默认的dispatcher(“转发”)对应。
3.chain
  --Action处理完用户请求之后,转发到下一个Action继续处理。形成“链”式处理。
4.redirectAction
  --客户端跳转到另一个Action
5.freemarker
  --一种模板框架
6.httpheader
  --发一个http头信息,很少用
7.stream
  --直接生成“二进制”流作为响应。,更多的时候用在下载的时候
8.velocity
  --一种模板框架
9.xslt
  --XML的修饰语言,常用来做数据和显示分离
10.plaintext
  --直接显示视图页面的源代码。一般不会有太大的用处。主要用于显示源代码。

您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

小黑屋|手机版|Archiver|疯狂Java联盟 ( 粤ICP备11063141号 )

GMT+8, 2018-5-25 09:26 , Processed in 0.319473 second(s), 6 queries , File On.

快速回复 返回顶部 返回列表