Action处理请求参数(属性驱动与模型驱动)

在Struts2中,页面(指的是浏览器,不过在实际的开发中,不管是浏览器端还是手机端,前后端数据的交互都是用json)的请求苏剧和Action有两种基本的对应方式,分别是字段驱动方式(属性驱动)和模型驱动方式。

1、属性驱动

属性驱动通过字段进行数据传递,包括两种情况:
1、与基本数据类型的属性对应;
比如:

public class UserAction{
    private String username;
    private String password;
    //getter、setter方法

    public String execute() throws Exception{
        return SUCCESS;
    }
}

2、直接使用域对象。

在第1种方法中,如果传入的参数很多的话,Action类的代码将变得越来越多,这时候应该考虑使用域对象。
使用域对象,将所有字段作为一个实体类的属性,它们应该一一对应。
比如:

public class User{
    private String username;
    private String password;
    private int age;

    //getter、setter方法
}
public class UserAction extends ActionSupport{
    private User user;

    public User getUser(){
        return user;
    }

    public void setUser(User user){
        this.user = user;
    }

    public String executer() throws Exception(){
        //。。。。代码
        return SUCCESS;
    }
}

在使用域对象的时候,为了使jsp页面可以传值给域对象,格式必须是“对象.属性名”,为什么需要加前缀呢,因为属性驱动的Action类里面有多个域对象,只有对象.属性名才能确定表单的值到底赋到哪个对象里的哪个属性。

2、模型驱动

模型驱动通过实现ModelDriven接口来接收请求参数,Action类必须实现ModelDriven接口,并且重写getModel()方法,这个方法返回的是Action所使用的数据模型对象。

首先先创建一个javaBean,其实就是跟属性驱动的域对象一样,将属性设置为private,然后加上对应的getter、setter方法。

Action类代码如下:

public class LoginAction extends ActionSupport implements ModelDriven<User>{

    //封装数据
    private User user = new User();

    //模型驱动
    @Override
    public User getModel() {
        return this.user;
    }
}

至于属性驱动还是模型驱动的讨论,在CSDN上,有人说是属性驱动的性能比模型驱动的性能好,原文地址:点击查看 ;关于属性驱动与模型驱动的区别,原文地址:点击查看

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值