struts2数据封装(九)

分属性和模型两种方式

一、属性驱动有两种方式。

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>

源码地址




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值