Struts2:Action中result的各种转发类型

 源码下载地址:http://download.csdn.net/detail/zhoujing_0424/9239429   

Struts2的核心配置文件struts.xml的基本格式为:

<struts>
	<package name=" " namespace=" " extends="struts-default">
		<action name=" " class=" " method="execute">
			<result name=" " type=" ">index.jsp</result>
		</action>
	</package>
</struts>
    Action配置的各项默认值为:
    1)如果没有为action指定class,默认是ActionSupport。
    2)如果没有为action指定method,默认执行action中的execute()方法。
    3)如果没有为action指定result,默认值为success。

    Struts2为result提供了多种转发类型,常用的有dispatcher、redirect、redirectAction、plainText等。以如下图所示的项目来分别说明这四种转发方式。


1.dispatcher:默认值,内部请求转发

<struts>
	<package name="zj" namespace="/control" extends="struts-default">
		<action name="helloworld" class="cn.zj.action.HelloWorldAction" method="execute">
			<result name="success">/WEB-INF/page/hello.jsp</result>
		</action>
	</package>

</struts>
    如上代码所示,在浏览器地址栏输入http://localhost:8080/Struts2/control/helloworld,将会转向WEB-INF目录底下page文件夹中的hello.jsp,在hello.jsp中可以通过${属性名}表达式访问action中的属性。

2.redirect:请求重定向

<struts>
	<package name="zj" namespace="/control" extends="struts-default">
		<action name="redirect">
			<result type="redirect">/index.jsp</result>
		</action>
	</package>

</struts>
    如上代码所示,访问URL为http://localhost:8080/Struts2/control/redirect,会重定向到http://localhost:8080/Struts2/index.jsp。注意:浏览器重定向redirect方式无法访问WEB-INF下的jsp文件,WEB-INF下的jsp文件只能由服务器的内部请求转发。

3.redirectAction:重定向到另外一个action

<struts>
	<package name="zj" namespace="/control" extends="struts-default">
		<action name="helloworld" class="cn.zj.action.HelloWorldAction" method="execute">
			<result name="success">/WEB-INF/page/hello.jsp</result>
		</action>
		<action name="redirectAction">
			<result type="redirectAction">helloworld</result><!-- 转向同一个包内的action -->
		</action>
		<action name="redirectAction2">
			<result type="redirectAction">
				<param name="actionName">action2</param><!-- 转向不同包的action -->
				<param name="namespace">/control2</param>
			</result>
		</action>
	</package>
	<package name="zj2" namespace="/control2" extends="struts-default">
		<action name="action2">
			<result type="redirect">/index.jsp</result>
		</action>	
	</package>
</struts>
    如上代码所示,重定向到另外一个action分为两种情况,一种是重定向到同一个包中的action,这种情况下直接提供actionName即可;另外一种是重定向到不同包中的action,这种情况下需要使用param来指定namespace和actionName。访问URL为http://localhost:8080/Struts2/control/redirectAction会先转向http://localhost:8080/Struts2/control/helloworld,然后转向WEB-INF目录底下page文件夹中的hello.jsp,这里发生了一次请求重定向和一次内部请求转发。访问URL为http://localhost:8080/Struts2/control/redirectAction2会先转向http://localhost:8080/Struts2/control2/action2,然后再转向http://localhost:8080/Struts2/index.jsp,这里发生了两次请求重定向。

4.plainText:显示原始文件内容

<struts>
	<package name="zj" namespace="/control" extends="struts-default">
		<action name="plainText">
			<result type="plainText">/index.jsp</result>
		</action>
		<action name="plainText2">
			<result type="plainText">
				<param name="location">/index.jsp</param>
				<param name="charSet">UTF-8</param><!-- 指定读取文件的编码 -->
			</result>
		</action>
	</package>
</struts>
    plainText显示原始文件内容,例如:当我们需要原样显示jsp文件源代码的时候,我们就可以使用此类型。我们还可以使用param的charSet参数来指定读取文件的编码,这可以用于解决乱码问题。



    



发布了40 篇原创文章 · 获赞 7 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章