框架 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;
}
}
类型转换
以上是关于框架 day28 Struts2-封装数据,类型转换,数据校验,国际化,拦截器的主要内容,如果未能解决你的问题,请参考以下文章
深入分析JavaWeb 45 -- Struts2封装请求参数与类型转换
深入分析JavaWeb 45 -- Struts2封装请求参数与类型转换
深入分析JavaWeb 45 -- Struts2封装请求参数与类型转换