struts2学习(6)——result的type配置

struts2.0中的result是视图资源的配置,struts2.0的机制可以很好的兼容各种视图资源,驶入资源可以使用各种实现技术。jsp、FreeMarker等,通过配置可以让Action转向各种技术实现的视图资源。

<package name="it" extends="struts-default" namespace="">

<action name="123" class="###" method="###">

<result name="success"  type="dispatch">sjf.jsp</result>

</action>

</package>


result的tyoe字段可以标注各种视图的类型。

在struts-default.xml文件保存在struts-core-***中,部分片段

<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult" default="false" />
  <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true" />
  <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult" default="false" />
  <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult" default="false" />
  <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult" default="false" />
  <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult" default="false" />
  <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult" default="false" />
  <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult" default="false" />
  <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult" default="false" />
  <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" default="false" />

从中我们可以看到type属性支持的视图资源格式很丰富。

chain:Action链式处理的结果类型

dispatcher:使用jsp作为视图结果

frermarker:freemarker

httpheader:控制特殊的http行为

redirect:浏览器重定向

redirectAction:跳转到Action

stream:向浏览器返回一个InputStream(通常用于文件下载)

velocity:velocity

xslt:xml/xslt结果

plain text:显示整个页面的原始代码。



当我们在进行页面的重定向redirect是,浏览器是无法访问我们的WEB-INF目录下的jsp页面的,它只能访问webContent下的视图资源,浏览器的重定向是发生在浏览器上的,而不是发生在服务器上,所以它不能像forward一样直接转发。


当使用redirectAction时

<package name="it" extends="struts-default" namespace="">

<action name="123" class="###" method="###">

<result name="success"  type="redirectAction">1234?username=${username}</result>

</action>

<action name="1234" class="###" method="###">

<result name="success"  type="dispatch">sjf.jsp</result>

</action>

</package>

这样我们在同一个包中,直接使用action的name就行,但是当我们要转向的是另一个包中action,就不能这样写了,result有两个属性对应着两个方法setActionName和setNamespace,属性为actionName,namespace

<package name="it" extends="struts-default" namespace="">

<action name="123" class="###" method="###">

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

<param name="actionName">123</param>

<param name="namespace">/test<param>

</result>

</action>

</package>


<package name="it" extends="struts-default" namespace="/test">

<action name="123" class="###" method="###">

<result name="success"  >1234.sp</result>

</action>

</package>

这样就可以重定向到其他的package中。


plain text 是要显示页面的源代码

<result type="plainText">

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

<param name="charSet">UTF-8</param>

</result>


关于视图,当多个action要共享同一个视图的时候,我们没必须在每个action中都定义该视图

可以在包中定义

<global-results>
    <result name="message">message.jsp</result>
</global-results>


或者说多个包要同时共享result,定义一个package然后其他包继承这个包就ok了。

<package name="iii" namespace="" extends="struts-default">
<global-results>
    <result name="message">message.jsp</result>
    </global-results>
</package>

<package name="itcast" namespace="/test" extends="iii">

<package name="ddd" namespace="/er" extends="iii">

这样就ok了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值