六、Struts2如何处理结果页面的跳转

结果页面的跳转是配置在struts.xml文件中的,配置后Struts2框架会根据响应类(Action)中的响应方法的返回值去配置文件中找到跳转的页面或者其他处理Action.

两种结果页的声明方式

1.全局结果页面
如果<package>包中的一些action都返回相同的结果,并且跳转的页面都是同一个JSP页面,这样就可以配置全局的结果页面。
全局结果页面针对的当前的包中的所有的Action,但是如果局部还有结果页面,会优先局部的。
使用的标签是<global-results>,例如:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

	<package name="default" namespace="/" extends="struts-default">
		
		<!-- 全局跳转结果页配置 -->
		<global-results >
			<result name="success">/suc.jsp</result>
			<result name="error">/error.jsp</result>
		</global-results>
	
		<action name="demo1" class="blog.csdn.net.mchenys.Demo1Action" >
			<!-- <result name="success">/suc.jsp</result> -->
		</action>
		
		<action name="demo2" class="blog.csdn.net.mchenys.Demo2Action" >
			<!-- <result name="success">/suc.jsp</result> -->
		</action>
	</package>


</struts>

2.局部结果页面
局部结果页是单独配置在Action标签中你的,使用的是<result>标签,前面的文章也介绍过改标签有2个属性,name属性对应Action类的响应方法的返回结果(或者说action标签的method代表的方法的返回结果),type代表的是页面跳转类型,后面会介绍几个常用的跳转类型。例如:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<package name="default" namespace="/" extends="struts-default">
		<action name="demo3" class="blog.csdn.net.mchenys.Demo3Action">
			<!-- 局部跳转结果页配置 -->
			<result name="login">/login.jsp</result>
			<result name="save_ok">/list.jsp</result>
		</action>
	</package>
</struts>

结果页面的类型

通过<result>标签的type属性配置,常见的结果类型可以去struts-default.xml中查找,例如:
在这里插入图片描述
这里介绍几个常用的类型:

  • dispatcher:转发,type的默认值, 只能用于Action—>JSP的转发跳转。需要书写/
    例如:<result name="msg" type="dispatcher">/msg.jsp</result>

  • redirect:重定向,只能用于Action—>JSP的重定向跳转。需要书写/
    例如:<result name="login" type="redirect">/login.jsp</result>

  • chain:多个action之间转发跳转,从一个Action转发到另一个Action, Action—>Action。不用书写/,直接写Action类的方法名
    例如:<result name="jump" type="chain">demo2</result>

  • redirectAction:多个action之间重定向的跳转,从一个Action重定向到另一个Action,Action—>Action。不用书写/,直接写Action类的方法名
    例如:<result name="saveOK" type="redirectAction">customer_findByPage</result>

  • stream:文件下载时候使用的。

    例如:

    <result name="downloadOK" type="stream">
    	<!-- inputName指向被下载文件的来源,对应Action中返回的InputStream -->
    	<param name="inputName">inputStream</param>
    	<!-- 指定文件下载的处理方式,内联(inline)和附件(attachment)两种方式,attachment会弹出文件保存对话框 -->
    	<param name="contentDisposition">attachment;filename=${fileName}</param>
    	<!-- 文件大小 -->
    	<param name="contentLength">contentLength</param>
    	<!--指定下载文件的缓冲大小 -->
    	<param name="bufferSize">4096</param>
    </result>
    
  • json : 返回json数据的时候使用,json结果类型不是struts-default包的,需要继承json-default包,同时引入struts2-json-plugin-2.3.24.jar 包
    例如:

    <result type="json">
    	<param name="root">dataMap</param>
    	<!-- 是否去掉返回值为NULL的properties -->
    	<param name="excludeNullProperties">true</param>
    </result>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值