Struts2 result视图详解

1 Struts2视图类型

在配置struts.xml文件时,我们要给每个Action配置result,其中result里面的type属性,是指返回的视图资源的类型,不同类型代表不同的结果输出,它的默认值为dispathcer。以下列出Struts2预定义的所有视图资源类型:

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

2 dispatcher结果类型


dispatcher 是 Struts2 的默认结果类型,它用于表示转发到指定结果资源。

由于 Struts2 在后台使用 RequestDispatcher 的 forward() 方法转发请求,所以在用户的整个请求/响应过程中,保持的是同一个请求对象,即目标 JSP/Servlet 接收到的请求/响应对象与最初的 JSP/Servlet 的请求/响应对象相同。

dispatcher 结果类型的对应类是 org.apache.struts2.dispatcher.ServletDispatcherResult,该类有 location 和 parse 两个属性,可以通过 struts.xml 配置文件中的 <result> 元素的 <param> 子元素设置,代码如下所示:

<result name="success" type="dispatcher">
    <param name="location">/success.jsp</param>
    <param name="parse">true</param>
</result>

3 redirect结果类型

redirect 结果类型用于重定向到指定的结果资源,该资源可以是 JSP 文件,也可以是 Action 类。使用 redirect 结果类型时,系统将调用 HttpServletResponse 的 sendRedirect() 方法将请求重定向到指定的 URL。

redirect 结果类型的对应类是 org.apache.struts2.dispatcher.ServletRedirectResult。在使用 redirect 时,用户要完成一次和服务器之间的交互,浏览器需要发送两次请求,请求过程如图 1 所示。

另外,Struts2还分为全局视图 与 局部视图

4 全局视图

特点:配置在package下面,全局视图对当前package下的所有Action都生效!

<package name="base" extends="struts-default" namespace="/">	
	<!-- 全局视图 -->
	<global-results>
		<result name="login" type="redirect">/login.jsp</result>
	</global-results>

5 局部视图

特点:配置在Action下面,局部视图只对当前Action生效!

<action name="save" class="com.yiidian.action.DemoAction" method="save">
	<result type="redirectAction">list</result>
</action>

 

源码下载:https://pan.baidu.com/s/1c1Sey4mRF8cH__GxipLEGg

热门文章

优秀文章