Struts2学习笔记整理(七)-----数据封装到对象的三种方法及封装数据到list、map集合
strus2中获取表单数据有两种方式属性驱动和模型驱动,属性驱动即使用Action的属性元素封装请求参数,而模型驱动是使用javaBean来封装来回请求参数。
一、属性驱动的数据封装
public class AttributeAction extends ActionSupport {
// 属性直接放在action类中,并且每一个属性都得写get和set方法
private String name;
private String passwd;
// 经过struts2的封装,可以直接在这里获取到我们需要的数据
// 我们并没有自己去设置这些属性的值,都是struts2帮我们做好了
// 这就是属性驱动的封装机制
public String execute() {
System.out.println(name);
System.out.println(passwd);
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
}
我们发现这种方法在属性较少的情况下可取,如果属性很多,代码会很乱,所以有了下面的模型驱动
二、模型驱动(用得最多)
// 实现ModelDriven接口,泛型中写我们封装的数据
public class StudentAction extends ActionSupport implements ModelDriven<User> {
// 我们必须实例化我们封装的数据,struts2会直接使用我们的这个类,将数据set进去
// 所以我们必须在这个类中写get和set方法
User u = new User();
// 实现此接口必须实现的方法,返回我们封装的数据
@Override
public User getModel() {
return u;
}
@Override
// 这种方法我们完全没有设置什么,但是struts2依然为我们将数据放了进去
// 这里其实是java反射的应用
public String execute() throws Exception {
System.out.println(u.getName());
System.out.println(u.getPasswd());
return "success";
}
}
三、表达式封装(会用)
使用struts2标签的模型驱动:
<form action="normal/DomainModel_add" method="post">
<%--注意name属性,必须是我们action中的数据名称.属性名--%>
<input type="text" name="user.name">
<input type="text" name="user.passwd">
<button type="submit">提交</button>
</form>
// 注意,这里不用实现ModelDriven接口
// 看马士兵说的这叫域模型
public class DomainModelAction extends ActionSupport {
// 注意,这里不用自己实例化,struts2会帮助我们实例化
// 所以,user里面必须有不带参数的构造方法
// 同时,注意下面,我们必须写出user的get和set方法
User user;
public String execute() {
System.out.println(user.getName());
System.out.println(user.getPasswd());
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
为什么说是标签驱动的呢?看下面的form表单:
<form action="normal/DomainModel_add" method="post">
<%--注意name属性,必须是我们action中的数据名称.属性名--%>
<input type="text" name="user.name">
<input type="text" name="user.passwd">
<button type="submit">提交</button>
</form>
一、获取封装表单数据到list集合(用得不多,会用即可)
示例
获取用户输入的用户名和密码并输出用户名。
jsp页面

list[0]表示list中的第一个user对象
Java代码

二、封装表单数据到map集合(用得不多,会用即可)
示例
获取用户输入的用户名和密码并输出用户名。
jsp页面

'one'是map的key通过key来获取user对象
java代码

浙公网安备 33010602011771号