分属性和模型两种方式
一、属性驱动有两种方式。
1、直接在Action类中定义相对应的字段,提供set方法。
然后,前端页面,直接传入对应的属性。
比如:
public class Regist1Action extends ActionSupport {
private String username;
private String password;
private Integer age;
@Override
public String execute() throws Exception {
System.out.println(username + " " + password + " " + age);
return NONE;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setAge(Integer age) {
this.age = age;
}
}
<form action="${ pageContext.request.contextPath }/regist1.action"
method="post">
姓名:<input type="text" name="username" /><br />
密码:<input type="password" name="password" /><br />
年龄:<input type="password" name="age" /><br />
<input type="submit" value="注册" />
</form>
2、在Action类中定义java bean,属性封装到java bean中。
然后,前端页面,用ongl表达式。bean.属性。
比如:
public class User {
private String username;
private String password;
private Integer age;
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 Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", age=" + age + "]";
}
}
public class Register2Action extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
System.out.println(user);
return NONE;
}
}
<form action="${ pageContext.request.contextPath }/regist2.action"
method="post">
姓名:<input type="text" name="user.username" /><br />
密码:<input type="password" name="user.password" /><br />
年龄:<input type="password" name="user.age" /><br />
<input type="submit" value="注册" />
</form>
二、模型驱动
/**
* 模型驱动的方式
* 实现ModelDriven接口
* 必须要手动实例化对象(需要自己new)
*/
public class Regist3Action extends ActionSupport implements ModelDriven<User> {
// 必须手动实例化
private User user = new User();
// 获取模型对象
@Override
public User getModel() {
return user;
}
@Override
public String execute() throws Exception {
System.out.println(user);
return NONE;
}
}
<form action="${ pageContext.request.contextPath }/regist3.action"
method="post">
姓名:<input type="text" name="username" /><br />
密码:<input type="password" name="password" /><br />
年龄:<input type="password" name="age" /><br />
<input type="submit" value="注册" />
</form>
实际开发中:直接在Action类中定义相对应的字段,提供set方法 和 模型驱动 用的比较多
三、集合List
/**
* 属性驱动的方式,把数据封装到List集合中
*/
public class Regist4Action extends ActionSupport {
private static final long serialVersionUID = -7567275964736686269L;
private List<User> list;
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
@Override
public String execute() throws Exception {
for (User user : list) {
System.out.println(user);
}
return NONE;
}
}
<h3>向List集合封装数据(默认情况下,采用的是属性驱动的方式)</h3>
<!-- 后台:List<User> list -->
<form action="${ pageContext.request.contextPath }/regist4.action" method="post">
姓名:<input type="text" name="list[0].username" /><br />
密码:<input type="password" name="list[0].password" /><br />
年龄:<input type="password" name="list[0].age" /><br />
姓名:<input type="text" name="list[1].username" /><br />
密码:<input type="password" name="list[1].password" /><br />
年龄:<input type="password" name="list[1].age" /><br />
<input type="submit" value="注册" />
</form>
四、集合Map
/**
* 属性驱动的方式,把数据封装到Map集合中
*/
public class Regist5Action extends ActionSupport {
private static final long serialVersionUID = -5650712704292303969L;
private Map<String, User> map;
public Map<String, User> getMap() {
return map;
}
public void setMap(Map<String, User> map) {
this.map = map;
}
@Override
public String execute() throws Exception {
System.out.println(map);
return NONE;
}
}
<h3>向Map集合封装数据(默认情况下,采用的是属性驱动的方式)</h3>
<!-- 后台:List<User> list -->
<form action="${ pageContext.request.contextPath }/regist5.action" method="post">
姓名:<input type="text" name="map['one'].username" /><br />
密码:<input type="password" name="map['one'].password" /><br />
年龄:<input type="password" name="map['one'].age" /><br />
姓名:<input type="text" name="map['two'].username" /><br />
密码:<input type="password" name="map['two'].password" /><br />
年龄:<input type="password" name="map['two'].age" /><br />
<input type="submit" value="注册" />
</form>