1.在struts2里面封装类ActionContext,使用这个对象获取表单数据
ActionContext context = ActionContext.getContext();
//2 调用方法获取表单数据
Map<String, Object> map = context.getParameters();
2. ServletActionContext
struts2里面封装类ServletActionContext,这个类里面提供很多静态方法,获取request
3.接口注入,实现ServletRequestAware,获得request对象
封装:
属性封装实现方式:
(1)在action定义成员变量,和表单输入项name属性值对应
(2)生成定义变量set方法(get和set方法)
使用模型驱动封装,把表单数据封装到实体类对象里面
(1)让action实现接口ModelDriven
(2)实现接口里面的方法 getModel()
(3)在action成员变量位置,手动创建对象,要求:实体类属性和表单输入项name属性值一样
private User user = new User();
//实现接口的方法
public User getModel() {
return user;
}
需要在表单输入项里面写表达式完成数据封装,使用表达式封装可以把表单数据封装到对象里面
(1)在action成员变量位置定义对象类型变量
(2)生成对象类型变量get和set方法
//1 定义对象类型变量
private User user;
//2 get和set方法
public User getUser() {
returnuser;
}
publicvoid setUser(User user) {
this.user = user;
}
提交的name为对象.属性 如name=user.userName
使用这两种方式可以把表单数据封装到对象里面
2区别:
(1)使用模型驱动把数据封装到一个对象里面
(2)使用表达式封装可以把数据封装到多个对象里面
注:同一个表单使用一种方式封装
封装到list name表达式:对象[index].属性
//1定义list集合类型变量
private List<User> list;
//2 get和set方法
public List<User> getList() {
returnlist;
}
publicvoid setList(List<User> list) {
this.list = list;
}
封装到map Map<string,对象> name表达式:map[key].属性
//1 定义map集合类型变量
private Map<String,User> map;
//2 get和set方法
public Map<String, User> getMap() {
returnmap;
}
publicvoid setMap(Map<String, User> map) {
this.map = map;
}