框架 day28 Struts2-封装数据,类型转换,数据校验,国际化,拦截器

Posted 飛白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了框架 day28 Struts2-封装数据,类型转换,数据校验,国际化,拦截器相关的知识,希望对你有一定的参考价值。


封装数据(重要)

 

1.1普通字段,action属性【★★】

*编写表单,提供表单元素,<input name="" /> name的值为普通字符串,及javaweb编写内容。

       <inputname="userName">

*将name的值当成action属性(property),提供setter方法

       publicvoid setUserName(String uesrName){}

	
	//用于封装数据
	private String userName;
	public void setUserName(String userName) {
		this.userName = userName;
	}
	private String userPwd;
	public void setUserPwd(String userPwd) {
		this.userPwd = userPwd;
	}
	
	@Override
	public String execute() throws Exception {
		System.out.println(this.userName);
		System.out.println(this.userPwd);
		return NONE;
	}

}


1.2OGNL表达式,javabean【★】

*编写action提供javabean的setter和getter

       privateUser user;  setter getter

*修改表单,将name的值格式:user.uesrName  ,将给action中user对象的userName进行赋值。

 表单

	<form action="${pageContext.request.contextPath}/paramDemo02Action" method="post">
		用户名:<input type="text" name="userBean.userName"/> <br/>
		密码:<input type="text" name="userBean.userPwd"/> <br/>
		<input type="submit" value="登录"/>
	</form>

action

public class ParamDemo02Action extends ActionSupport {
	
	//用于封装数据
	private User userBean;
	/* userBean.userName 表达式解析过程
	 *  首先获得userBean,执行getter,获得对象,此时对象null,将执行setter
	 *  在执行user对象 userName的setter方法,进行赋值。
	 * userBean.userPwd
	 * 	先执行userBean的 getter,此时对象已经存在
	 *  在执行user对象 userPwd的setter方法进行赋值
	 */
	public User getUserBean() {
		return userBean;
	}
	public void setUserBean(User userBean) {
		this.userBean = userBean;
	}
	

	@Override
	public String execute() throws Exception {
		System.out.println(this.userBean);
		return NONE;
	}
	
}


1.3普通字段,ModelDriven【★★★】

*javaweb时表单,将数据封装到javabean

*Action编写

       1实现接口implements ModelDriven<JavaBean类型>

       2提供javabean实例, private User user = new User();

       3实现getModel方法,并将javabean实例返回, getModel(){ return this.user;}

//#1.1 实现接口
public class ParamDemo03Action extends ActionSupport implements ModelDriven<User> {
	
	//#1.2 提供实例
	private User user = new User();
	//#1.3 实现方法
	@Override
	public User getModel() {
		return this.user;
	}

	@Override
	public String execute() throws Exception {
		System.out.println(this.user);
		return NONE;
	}

}



1.4集合(了解)

*通过OGNL表达式给List/Map/Array等容器赋值。

*action中容器必须提供getter和setter方法

 

建议:之后如果需要给action提供getter或setter,都提供两个方法。

 表单

<form action="${pageContext.request.contextPath}/paramDemo04Action" method="post">
		用户名1:<input type="text" name="userList[0].userName"/> <br/>
		密码1:<input type="text" name="userList[0].userPwd"/> <br/>
		用户名2:<input type="text" name="userList[1].userName"/> <br/>
		密码2:<input type="text" name="userList[1].userPwd"/> <br/>
		<input type="submit" value="登录"/>
	</form>

封装

public class ParamDemo04Action extends ActionSupport {
	
	private List<User> userList;
	public List<User> getUserList() {
		return userList;
	}
	public void setUserList(List<User> userList) {
		this.userList = userList;
	}
	
	@Override
	public String execute() throws Exception {
		for (User user : userList) {
			System.out.println(user);
		}
		return NONE;
	}
}



类型转换