struts2 接受参数的两种方式(属性驱动和模型驱动)

13 篇文章 0 订阅

定义:

  • 在struts2中,页面的数据和action(控制层)传输基本上有两种方式,一个是属性驱动、另一个是模型驱动。
属性驱动
  1. 基本数据类型的属性对应:
    就是Web页面上html标签的name属性或者与属性相对应的getter/setter相对应。当页面提交的时候,struts2会自动从request对象里面把数据取出来,然后按照名称进行对应,自动设置到Action的属性里面去。
    缺点:如果实体属性太多,相应的getter/setter方法也会很多,Action类会显得十分零乱
    public class LoginAction extends ActionSupport{
    
        private String userName;
        private String password;
    
    
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String login(){
    
            return "login";
        }
    }
    
    //前台页面
    <body>
        <form action="${basePath }/login_login">
        用户名:  <input  type="text" name="userName" />
        用户密码: <input  type="text" name="password" />
                <input type="submit" value="提交"/>
        </form>
    </body>
    2、直接使用域对象(推荐用这种):
    为了解决上种方式的问题,struts2提供了直接使用域对象的属性驱动(即把属性和对应的getter/setter方法从Action里面移出去,单独封装成一个域对象,然后在Action类中直接使用这个域对象就可以了。需要改变的是,在相应的name属性上,添加一个域对象的前缀,指明这个值到底对应到哪一个域对象里去。(需要有setter方法)
    //前台页面
    <body>
        <form action="${basePath }/login_login">
        用户名:  <input  type="text" name="user.userName" />
        用户密码: <input  type="text" name="user.password" />
                <input type="submit" value="提交"/>
        </form>
    </body>
    
    //Action类里把属性封装成了User实体并实例化了一个对象user
    public class LoginAction extends ActionSupport{
    
        //域模型驱动
        User user = new User();
    
        public String login(){
    
            return "login";
        }
    }
    模型驱动
    • 实现方式:让Action实现一个ModelDriven的接口。这个接口需要我们实现一个getModel的方法,这个方法返回的就是Action所使用的数据模型对象。采用ModelDriven的方式一个Action只需要一个Model,因此web界面里的name不需要加上前缀修饰。(需要有setter方法)
    <form action="${basePath }/login_login">
        用户名:  <input  type="text" name="userName" />
        用户密码: <input  type="text" name="password" />
                <input type="submit" value="提交"/>
    </form>
    
    //LoginAction类
    public class LoginAction extends ActionSupport implements ModelDriven{
    
        User user = new User();//模型驱动也需要实例化
    
        public String login(){
    
            return "login";
        }
    
    
        @Override
        public Object getModel() {
            return user;
        }
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值