Struts2结果页面的配置

本文记录Java学习过程中遇到的Struts2结果页面的配置~

在struts.xml文件中,Result的配置非常简单,使用<result>元素来配置result逻辑视图与物理视图之间的映射,<result>元素可以有name和type属性,但这两种属性都不是必选的。

  • name属性:指定逻辑视图的名称,默认值是success;
  • type属性:指定返回的视图资源的类型,不同的类型代表不同的结果输出,默认值是dispatcher。

示例代码:

<action name="demo" class="ren.oliver.DemoAction">
	<result name="success" type="dispatcher">/result.jsp</result>
</action>

在上述配置中,使用了<result>元素的name和type属性。其中,为Action配置了name为success的result映射,该映射的值可以是JSP页面,也可以是一个Action的name值,用type属性指定了该result的结果类型为dispatcher,它也是默认的结果类型。

在结果页面的配置中,Struts2有两种配置的方式,一种称为全局结果页面,另一种称为局部结果页面,具体解释如下:

全局结果页面

全局结果页面是指同一个包下面配置的Action中返回相同的字符串的值,都可以跳转到该页面,需要通过<global-results>进行配置。

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

局部结果页面

局部结果页面是指在某个Action中根据该字符串的值进行页面的跳转,只对这个Action有效。

<action name="demo" class="ren.oliver.DemoAction">
	<result name="success" type="dispatcher">/result.jsp</result>
</action>

在Struts2中,当框架调用Action对请求进行处理后,就要向用户呈现一个结果视图,Struts2预定义了多种ResultType,其实就是定义了多种展示结果的技术。

一个结果类型就是实现了com.opensymphony.xwork2.Result接口的类,Struts2把内置的<result-type>都放在struts-default包中,struts-default包就是配置包的父包,这个包定义在struts2-core-2.3.24.jar包中的根目录下的struts-default.xml文件中,可以找到相关的<result-type>的定义。

每个<result-type>元素都是一种视图技术或者跳转方式的封装,其中的name属性指出在<result>元素中如何引用这种视图技术或者跳转方式,对应着<result>元素的type属性。

Struts2中预定义的ResultType如下:

  • chain:用来处理Action链,被跳转的Action中仍能获取上个页面的值,如request信息;
  • dispatcher:用来转向页面,通常处理JSP,是默认的结果类型;
  • redirect:重定向到一个URL,被跳转的页面中丢失传递的信息;
  • redirectAction:重定向到一个Action,跳转的页面中丢失传递的信息;
  • freemarker:用来整合FreeMarker模板结果类型;
  • httpheader:用来处理特殊的HTTP行为结果类型;
  • stream:向浏览器发送InputStream对象,通常用来处理文件下载,还可用于Ajax的数据;
  • velocity:用来整合Velocity模板结果类型;
  • xslt:用来整合XML/XSLT结果类型;
  • plainText:显示原始文件内容,例如文件源代码;
  • postback:使得当前请求参数以表单形式提交。

注意:前三个值比较常用,需要重点记忆。

标签: none