Struts2中的数据封装

属性驱动

使用属性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;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_40007271/article/details/86366934