Struts2筆記06 封裝獲取表單資料方式

fcx961125發表於2017-06-26

1. 原始方式獲取表單資料封裝到實體類(User)


2.採用屬性封裝

使用屬性封裝獲取表單資料到屬性裡面,不能把資料直接封裝到實體類物件裡

實現步驟:
(1)在action成員變數位置定義變數
變數名稱和表單輸入項name屬性值一樣
(2)生成變數的set方法

表單資料

 <form action="${pageContext.request.contextPath }/form.action" method="post">
        使用者名稱:<input type="text" name="username"/><br/>
        密 碼:<input type="password" name="password"/><br/>
        地 址:<input type="text" name="address"/><br/>
        <input type="submit" value="提交"/>
    </form>

宣告表單屬性,並生成set方法


   private String username;
    private String password;
    private String address;

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String execute() throws Exception {
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        user.setAddress(address);
        return NONE;
    }


3.模型驅動封裝(重點)

使用模型驅動封裝可以把資料直接封裝到實體類物件裡

  實現步驟:
(1)action實現ModelDriven

(2)實現介面裡面的方法getModel()
把建立物件返回
(3)在action裡建立實體類物件

public class DemoAction1 extends ActionSupport implements ModelDriven<User> {
	//建立物件
	//前提要求:表單輸入項name屬性值和實體類屬性名稱一樣
    private User user = new User();

    public User getUser() {
        return user;
    }

    @Override
    public User getModel() {
	//返回建立的物件
        return user;
    }

    public String execute() throws Exception {
        System.out.println(user);
        return NONE;
    }
}


使用模型驅動和屬性封裝注意問題:
    在一個action中,獲取表單資料可以屬性封裝,使用模型驅動封裝,不能同時使用在同一表單資料,如果同時使用只執行模型驅動

4.表示式封裝

使用表示式封裝可以把資料直接封裝到實體類物件裡

實現過程:
(1)在action裡宣告實體類
(2)生成實體類變數的set get 方法
(3)在表單輸入項的name屬性值裡寫表示式形式

//宣告實體類
    private User user;
   //生成實體類變數的set get方法
    public User getUser() {
        return user;
    }

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

    public String execute() throws Exception {
        System.out.println(user);
        return NONE;
    }

 <form action="${pageContext.request.contextPath }/form.action" method="post">
        使用者名稱:<input type="text" name="user.username"/><br/>
        密 碼:<input type="password" name="user.password"/><br/>
        地 址:<input type="text" name="user.address"/><br/>
        <input type="submit" value="提交"/>
    </form>





實體類User

 



相關文章