action的编写方式和多方法调用

1.Action的编写方式(3种形式):
(1).支持使用POJO来做Action.(不推荐使用)
  优点:和Struts2解除耦合.
  缺点:
      <action/>元素配置,method属性默认值就是execute.
      但是写不对该方法,编译不报错.
      Action的请求方法中,最终得返回一个逻辑视图名(String类型).
      会造成不同Action编写者的随意性.

为了解决上述问题,Apache 定义了编写Action的规范:形式2:

public class  Action{
   public static final String SUCCESS = "success";
   public static final String NONE = "none";
   public static final String ERROR = "error";
   public static final String INPUT = "input";
   public static final String LOGIN = "login";

   public String execute() throws Exception;
}

(2).定义一个类实现于com.opensymphony.xwork2.Action接口.(不推荐使用)
public class LoginAction implements Action{
   public String execute() throws Exception{
         return  SUCCESS;
   }
}
(3).上述解决方案不错哦,但是,不支持数据校验,文本信息设置,国际化等功能.
所以开发中: 定义一个了继承于com.opensymphony.xwork2.ActionSupport类
public class LoginAction extends  ActionSupport{
   public String execute() throws Exception{
         return  SUCCESS;
   }

}

2.Action中多方法的调用:
1.动态方法调用:DMI
   请求的时候:  actionName !方法名 指定调用Action哪个方法
   默认情况下DMI是关闭的.要使用先配置支持动态方法调用的常量:
   <!-- 支持动态方法调用 ,这个value的值要设置为true-->
  <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

例如:struts.xml没有指定method属性但是product!add.action 就会执行ProductAction的add方法
   官方是不推荐使用. 默认是关闭(false)的

2.通配符形式访问:*


   在class、method属性及<result>子元素中通过 {N} 形式代表前面地N个* 匹配子串

*_*代表匹配两个字符串
{1} 匹配UserAction 用于执行class
{2} 匹配login用于指定method执行方法 和结果页面

总结:
使用通配符
*: 0到N个字符
{1}:表示第一个*的值.
{2}:表示第二个*的值.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值