Struts2 ---- result
<package name="helloWorld" extends="struts-default"> <!-- 配置一个 action: 一个 struts2 的请求就是一个 action name: 对应一个 struts2 的请求的名字(或对一个 servletPath, 但去除 / 和扩展名), 不包含扩展名 class 的默认值为: com.opensymphony.xwork2.ActionSupport method 的默认值为: execute result: 结果. --> <action name="zhuyemian-dao-struts" > <!-- result: 结果. 表示 action 方法执行后可能返回的一个结果. 所以一个 action 节点可能会有多个 result 子节点. 多个 result 子节点使用 name 来区分 name: 标识一个 result. 和 action 方法的返回值对应. 默认值为 success type: 表示结果的类型. 默认值为 dispatcher(转发到结果.) --> <result>/pages/input.jsp</result> </action> <action name="product-save" class="com.struts2.helloworld.Product" method="save"> <result name="details">/pages/details.jsp</result> </action> </package>
result中有两个属性。一个是name。是action方法的一个返回值。一个是type。表示响应的类型
struts.xml
<package name="actionContext" extends="struts-default"> <action name="TestActionContext" class="com.struts2.action.TestActionContext"> <result name="success">/fangwenWEB/test-actionContext.jsp</result> </action> <action name="TestAware" class="com.struts2.action.TestAware"> <result name="success">/fangwenWEB/test-Aware.jsp</result> </action> <action name="TestResult" class="com.struts2.action.TestResult"> <result name="a" type="dispatcher">/pages/A.jsp</result> <result name="b" type="redirect">/pages/B.jsp</result>
<!-- 重定向到一个 Action --> <result name="c" type="redirectAction"> <param name="actionName">testAction</param> <param name="namespace">/hlw</param> </result>
<!-- 转发到一个 Action --> <result name="d" type="chain"> <param name="actionName">testAction</param> <param name="namespace">/hlw</param> </result>
<!-- 通过 redirect 的响应类型也可以便捷的实现 redirectAction 的功能! dispatcher不能到Action-->
<result name="index" type="redirect">/atguigu/testAction.do</result> </action> </package> <package name="testPackage" namespace="/hlw" extends="struts-default"> <!-- <action name="testAction" class="com.struts2.action.TestAction"> <result>/pages/C.jsp</result> </action> --> <action name="testAction" class="com.struts2.action.TestAction"> <result>/pages/D.jsp</result> </action> </package>
Java代码:
package com.struts2.action; public class TestResult { public int number; public void setNumber(int number) { this.number = number; } public String execute(){ String result=null; //除以3余1 转发到A.jsp if(number%3==1){ result = "a"; } //除以3余2 重定向到B.JSP if(number %3 ==2){ result="b"; } //除以5余1转发到Action if(number % 5 ==1){ result="c"; } //除以5余2重定向到Action if(number % 5 ==2){ result="d"; } return result; } }
<action name="类名-方法名" class="全类名" method="方法名">
<result name="方法中的返回值">页面地址</result>
</action>
使用通配符
<action name="类名-*" class="com.struts2.action.TestAction" method="{1}">
<result name="{1}-success">页面地址</result>
</action>