struts2配置返回结果以及支持的结果类型

本文详细介绍了Struts2中如何配置Action的返回结果,并探讨了Struts2支持的各种结果类型,包括dispatcher(转发到jsp)、chain(Action链)、redirect(重定向)和redirectAction(重定向到其他Action)。通过对struts.xml文件的配置,可以实现不同逻辑视图与物理视图的映射,便于系统跳转到实际的视图资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      Struts2配置返回结果

       Struts2的Action在处理用户请求结束后,会返回一个普通的字符串,这个字符串其实是一个逻辑视图名,必须在struts.xml文件完成逻辑视图和物理视图资源的映射,才能让系统转到实际的视图资源。

配置过程如下:

首先,新建一个测试用的Action类,让其继承ActionSupport,ActionSupport类里实现了Action接口,里面封装了很多已经实现了的方法,Action接口里面定义的public static final String SUCCESS = "success",也可以直接拿来用。

package com.bran.e_result;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport{
	
	@Override
	public String execute() throws Exception {
		System.out.println("------TestAction---------");
		return SUCCESS;
	}

}

接着,在struts.xml配置文件里面配置如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<package name="result" namespace="/" extends="struts-default">
		<action name="TestAction"
			class="com.bran.e_result.TestAction" method="execute">
			<result name="success" type="dispatcher">/result.jsp</result>
		</action>
	</package>
</struts>

主要是采用<result .../>元素来配置结果,一个<action ...>...</action>元素可以有多个<result .../>子元素,这也表示一个Action可以对应多个结果。

配置<result .../>元素通常需要指定两个元素:

name :该属性指定所配置的逻辑视图名,就是上面Action中方法的返回值,默认值为success。

type:该属性指定的结果类型,默认是dispatcher转发到jsp的结果类型。

上面这段配置可以这么理解,当我们通过浏览器访问这个TestAction的时候,就会调用TestAction中的execute方法,这个方法会返回一个逻辑视图名success,接着再根据<result .../>元素中对逻辑视图名success的配置,就会转发到result.jsp这个页面。

由于,<action ...>...</action>元素中的method属性在不指明的情况下,默认是execute,<result .../>元素的name属性在不指明的情况下默认是success,type属性在不指明的情况下,默认是dispatcher

所以,上面这种配置也可以简化成下面

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<package name="result" namespace="/" extends="struts-default">
		<action name="TestAction"
			class="com.bran.e_result.TestAction">
			<result>/result.jsp</result>
		</action>
	</package>
</struts>

       Struts2支持的结果类型

        由上面可以知道,<result .../>元素里面的type属性是用来配置结果类型的,默认情况下是dispatcher,这是指定使用jsp作为视图的结果类型,除了jsp以外,Struts2还支持Velocity和FreeMarker结果类型等。Struts2内建还支持的结果类型如下:

  • chain                     Action链式处理结果类型,相当于可以转发到其他的Action
  • dispatcher             用于指定使用jsp作为视图结果,转发到jsp页面
  • freemarker            用于指定使用freemarker模板作为视图的结果类型
  • httpheader            用于控制特殊的HTTP行为的结果类型
  • redirect                 重定向类型,可以跳转到其他URL
  • redirectAction       重定向到其他Action
  • stream                  用于向浏览器返回一个InputStream(一般用于文件下载)
  • velocity                 用于指定使用Velocity模板作为视图的结果类型
  • xslt                        用于与XML/XSLT整合的结果类型
  • plainText               用于显示整个页面的原始代码的结果类型

在不加入其他Struts2插件的情况下,Struts2默认支持的结果类型就这么多了,比较常用的结果类型就有chain、dispatcher、redirect和redirectAction这四种,这四种结果类型在struts.xml的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<package name="result" namespace="/" extends="struts-default">
		<!-- 转发到result.jsp-->
		<action name="DispatcherAction"
			class="com.bran.e_result.DispatcherAction" method="execute">
			<result name="success" type="dispatcher">/result.jsp</result>
		</action>
		<!-- 重定向到result.jsp -->
		<action name="RedirectAction"
			class="com.bran.e_result.RedirectAction" method="execute">
			<result name="success" type="redirect">/result.jsp</result>
		</action>
		<!-- 转发到Action -->
		<action name="ChainAction"
			class="com.bran.e_result.ChainAction" method="execute">
			<result name="success" type="chain">
				<!-- Action的名字 -->
				<param name="actionName">DispatcherAction</param>
				<!-- Action所在的命名空间 -->
				<param name="namespace">/</param>
			</result>
		</action>
		<!-- 重定向到Action -->
		<action name="RedirectAction2"
			class="com.bran.e_result.RedirectAction2" method="execute">
			<result name="success" type="redirectAction">
				<!-- Action的名字 -->
				<param name="actionName">DispatcherAction</param>
				<!-- Action所在的命名空间 -->
				<param name="namespace">/</param>
			</result>
		</action>
	</package>
</struts>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值