1.关于result节点
1.result是action节点的子节点
2.result代表action方法执行后,可能去的一个目的地
3.一个action节点可以配置多个result子节点
2.result节点的两个属性值
1.name属性
result的name属性值对应着action方法可能有的一个返回值
2.type属性
1.result的type属性值表示结果的响应类型
2.result的type属性在struts-default包的result-types节点的name属性中定义了。
3.比较常用的几个type属性值有:
dispatcher(默认的):转发(与Servlet中的转发一样)
redirect:重定向(与Servlet中的重定向一样)
redirectAction:重定向到一个Action
chain:转发到一个Action
4.注意:
通过redirect也可以间接的重定向到一个Action,详情看Demo
但是不能通过dispatcher的方式间接转发到一个Action。
一个Demo
根据一个请求参数的不同取值,分别转发、重定向、重定向到一个Action、转发到一个Action。
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>
<!-- 配置Struts可以受理的请求的扩展名 -->
<constant name="struts.action.extension" value="action,do"></constant>
<package name="default" extends="struts-default">
<action name="testResult" class="struts2.action.TestResultAction">
<!-- 转发 -->
<result name="success" type="dispatcher">/success.jsp</result>
<!-- 重定向-->
<result name="index" type="redirect">/index.jsp</result>
<!-- 重定向到一个Action -->
<result name="login" type="redirectAction">
<!-- 指明要重定向的Action -->
<param name="actionName">testAction</param>
<!-- 指明命名空间 -->
<param name="namespace">/cerr</param>
</result>
<!--
通过这样也可以重定向到一个Action
<result name="login" type="redirect">/cerr/testAction.action</result>
-->
<!-- 转发到一个Action-->
<result name="test" type="chain">
<param name="actionName">testAction</param>
<param name="namespace">/cerr</param>
</result>
</action>
</package>
<package name="testPackage" namespace="/cerr" extends="struts-default">
<action name="testAction" class="struts2.action.TestAction">
<result>/success.jsp</result>
</action>
</package>
</struts>
TestResultAction.java文件:
public class TestResultAction {
private int number;
public void setNumber(int number) {
this.number = number;
}
public String execute(){
String result = null;
//根据请求参数number的值,作出不同的操作
if(number % 4 == 0){
result = "success";
}else if(number % 4 == 1){
result = "login";
}else if(number % 4 == 2){
result = "index";
}else{
result = "test";
}
return result;
}
}
网友评论