属性驱动
使用属性set方法注入(开发中不常用)
public class Demo1 extends ActionSupport{
//使用属性set方法注入
private String username;
private String password;
private Integer age;
private Date brithday;
private Double salary;
//提供这些属性的set方法
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setAge(Integer age) {
this.age = age;
}
public void setBrithday(Date brithday) {
this.brithday = brithday;
}
public void setSalary(Double salary) {
this.salary = salary;
}
@Override
public String execute() throws Exception {
System.out.println(username);
System.out.println(password);
System.out.println(age);
System.out.println(brithday);
System.out.println(salary);
//封装数据
User u = new User();
u.setUsername(username);
u.setPassword(password);
u.setAge(age);
u.setBrithday(brithday);
u.setSalary(salary);
return NONE;
}
}
属性驱动之二,页面提供表达式方式
在JSP页面中
<h3>方式二:属性驱动-在页面中提供表达式的方法</h3>
<form action="${pageContext.request.contextPath}/fengzhuang2.action" method="Post"></br>
用户名<input type="text" name="user.username"></br>
密码<input type="text" name="user.password"></br>
年龄<input type="text" name="user.age"></br>
生日<input type="text" name="user.brithday"></br>
工资<input type="text" name="user.salary"></br>
<input type="submit" name="提交">
</form>
在Action中
public class Demo2 extends ActionSupport {
//通过user对象
private User user = new User();
//提供user的get和set方法,一定要提供get方法
//因为拦截器完成数据封装,需要调用user对象,通过get方法可以获得同一个对象,将数据封装到同一个对象中
@Override
public String execute() throws Exception {
System.out.println(user);
return NONE;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
模型驱动(常用)
public class Demo3 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;
}
}
复杂数据类型List封装
JSP中
<h3>复杂类型的封装:list集合</h3>
<form action="${pageContext.request.contextPath}/flist.action" method="Post"></br>
商品名称<input type="text" name="products[0].name"></br>
商品价格<input type="text" name="products[0].price"></br>
商品名称<input type="text" name="products[1].name"></br>
商品价格<input type="text" name="products[1].price"></br>
商品名称<input type="text" name="products[2].name"></br>
商品价格<input type="text" name="products[2].price"></br>
<input type="submit" name="提交">
</form>
Action中
public class Demo1 extends ActionSupport{
//建立一个封装类的List集合,和集合的get和set方法
private List<Product> products ;
public List<Product> getProducts() {
return products;
}
public void setProducts(List<Product> products) {
this.products = products;
}
@Override
public String execute() throws Exception {
for (Product product : products) {
System.out.println(product);
}
return NONE;
}
}
复杂数据类型Map封装
<h3>复杂类型的封装:map集合</h3>
JSP中
<form action="${pageContext.request.contextPath}/fmap.action" method="Post"></br>
商品名称<input type="text" name="map[0].name"></br>
商品价格<input type="text" name="map[0].price"></br>
商品名称<input type="text" name="map[1].name"></br>
商品价格<input type="text" name="map[1].price"></br>
商品名称<input type="text" name="map[2].name"></br>
商品价格<input type="text" name="map[2].price"></br>
<input type="submit" name="提交">
</form>
Action中
public class Demo2 extends ActionSupport {
//要封装类的Map集合和集合的get和set方法
private Map<String,Product> map;
public Map<String, Product> getMap() {
return map;
}
public void setMap(Map<String, Product> map) {
this.map = map;
}
@Override
public String execute() throws Exception {
for (String key : map.keySet()) {
Product values = map.get(key);
System.out.println(key+" "+values);
}
return NONE;
}
}