Struts2学习第二天——动态方法调用
result的type属性
指定result的类型,不同类型的result代表不同的结果输出
默认取值dispatcher,请求转发(forward)到本程序里指定的资源
可以在Struts-default。xml中查看result的类型
redirect:请求重定向到指定URL
reditectAction:请求重定向到指定的Action
chain:Action链式处理,将请求转发(forward)到指定的Action
json:实现Ajax时返回JSON对象
method属性
在前面的例子里,Action默认使用execute()方法来处理请求。但是,如果有多个不同的请求需要同一个Action进行不同处理,怎么办?在Struts.xml文件中,需要指定Actin中的多个方法对不同的请求分别进行处理。该功能可以通过<action>中的method属性来实现。
1 public class HouserUserAction { 2 /** 3 * 处理login请求 4 * @return 5 */ 6 public String login(){ 7 System.out.print("执行login请求处理"); 8 return null; 9 } 10 /** 11 * 处理reg请求 12 * @return 13 */ 14 public String reg(){ 15 System.out.print("执行reg请求处理"); 16 return null; 17 } 18 }
Action配置代码
1 <action name="LoginUserAction" class="com.house.action.HouserUserAction" method="login"> 2 </action> 3 <action name="RegUserAction" class="com.house.action.HouserUserAction" method="reg"> 4 </action>
通过该配置既可通过LoginUserAction来调用login()方法也可通过RegUserAction来调用reg方法二者皆为一个Action
动态方法调用
1.<!-- 动态方法1使用URL /HouserUserAction!login.action -->
需要设置constant属性true
Struts2-core--->struts2-->default.properties 109行
<!-- 设置struts框架的常量(记录在defaut.properties属性) -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
struts配置
<action name="HouserUserAction" class="com.house.action.HouserUserAction"></action>
表单页面代码
<FORM id="user" method="post" name="user" action="/house/HouserUserAction!login.action">
2.<!-- 动态方法2使用通配符 -->
struts配置
<action name="*HouserUserAction" class="com.house.action.HouserUserAction" method="{1}"> </action>
*代指方法 method={1}占位符匹配一个字符串 也可写作 HouserUserAction_*等
表单页面代码
<FORM id="user" method="post" name="user" action="/house/loginHouserUserAction.action">
在<form action="house_add"method="post"></form>中来提交表单,当有完全匹配的时候优先使用完全匹配,没有完全匹配则去找有通配符的action