属性驱动
在action中成员位置,为每个属性设置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类型的属性自动被转换成String。实际上,只要八大基本数据类型和Date类型的属性才会被自动类型转换成String。并且Date的前台书写格式有要求:yyyy-MM-dd
- 不足:显而易见,不会自动封装成对象。
对象属性驱动
- 前台页面属性提交有变化
<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对象是属性,因此一定要有get,set方法
每次给user的属性赋值,都会调用getUser方法,如果user自己没有实例化,会先调用getUser,发现是空的。然后setUser实例化,然后赋值。 - 结论
如果没有实例化对象,1个setUser+n个getUser
实例化了n个getUser。前提是user有n个属性
模型驱动
这种提交方式,前台正常提交,只写属性名即可。
但是这种方法有局限性,就是只能提交一个对象。
网友评论