Struts2中提供了两类数据封装的方式?
  * 第二种方式:模型驱动
  > 使用模型驱动的方式,也可以把表单中的数据直接封装到一个JavaBean的对象中,并且表单的写法和之前的写法没有区别!
        > 编写的页面不需要任何变化,正常编写name属性的值
        > 模型驱动的编写步骤:
            * 手动实例化JavaBean,即:private User user = new User();
            * 必须实现ModelDriven<T>接口,实现getModel()的方法,在getModel()方法中返回user即可!!

    1.书写javaBean类User
package com.huida.domain;

public class User {
    
    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;
    }
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + "]";
    }
    
    
}
    2.书写RegistAction类:
package com.huida.action1;

import com.huida.domain.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/*
 * 模型驱动
 */
//实现的接口中写的类型:封装的是谁,就写谁
public class Regist3Action extends ActionSupport implements ModelDriven<User>{
    //属性驱动的时候不需要手动实例化,而模型驱动的时候必须手动实例化
    private User user=new User();
    public String execute() throws Exception{
        System.out.println(user);
        return NONE;
    }
    @Override
    public User getModel() {
        
        return user;
    }
}

    3.在struts.xml中进行配置:

<package name="demo" namespace="/" extends="struts-default">
        <action name="regist3Action" class="com.huida.action1.Regist3Action"></action>
    </package>

    4.写index.html表单:

<h3>模型驱动封装数据</h3>
    <form action="${ pageContext.request.contextPath }/regist3Action.action" method="post"> 
        姓名<input type="text" name="username"/><br/>
        密码<input type="text" name="password"/><br/>
        <input type="submit" value="注册">
        
    </form>

    启动服务器,运行index表单,输入姓名和密码,点击注册,在控制台输出如下表示数据封装成功:

    

 
 
 
posted on 2018-12-11 20:58  wyhluckydog  阅读(279)  评论(0编辑  收藏  举报