Struts2学习第二天——动态方法调用

时间:2024-05-20 17:04:32

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属性来实现。

 public class HouserUserAction {
/**
* 处理login请求
* @return
*/
public String login(){
System.out.print("执行login请求处理");
return null;
}
/**
* 处理reg请求
* @return
*/
public String reg(){
System.out.print("执行reg请求处理");
return null;
}
}

Action配置代码

 <action name="LoginUserAction" class="com.house.action.HouserUserAction" method="login">
</action>
<action name="RegUserAction" class="com.house.action.HouserUserAction" method="reg">
</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