屬性驅(qū)動
在action中成員位置,為每個屬性設(shè)置get,set方法。并且get,set方法后面的名稱和前臺頁面的name值一樣。這樣才可以自動封裝獲得。這樣就可以直接使用屬性了。
private String name;
private Integer age;
private Date date;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String Demo1(){
System.out.println(name);
System.out.println(date);
return SUCCESS;
}
- 注意:int類型的屬性,Date類型的屬性自動被轉(zhuǎn)換成String。實際上,只要八大基本數(shù)據(jù)類型和Date類型的屬性才會被自動類型轉(zhuǎn)換成String。并且Date的前臺書寫格式有要求:yyyy-MM-dd
- 不足:顯而易見,不會自動封裝成對象。
對象屬性驅(qū)動
- 前臺頁面屬性提交有變化
<form action="regist">
<input type="text" name="user.name">
<input type="text" name="user.age">
<input type="text" name="user.date">
<input type="submit">
</form>
- 后臺直接封裝成user對象
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
- 注意:這里的user對象是屬性,因此一定要有g(shù)et,set方法
每次給user的屬性賦值,都會調(diào)用getUser方法,如果user自己沒有實例化,會先調(diào)用getUser,發(fā)現(xiàn)是空的。然后setUser實例化,然后賦值。 - 結(jié)論
如果沒有實例化對象,1個setUser+n個getUser
實例化了n個getUser。前提是user有n個屬性
模型驅(qū)動
這種提交方式,前臺正常提交,只寫屬性名即可。
但是這種方法有局限性,就是只能提交一個對象。

Snip20170811_8.png