今天内容
1. 结果页面配置
* 全局结果页面
* 局部结果页面
* result标签type属性
2. 在action获取表单提交数据
* 使用ActionContext类获取
* 使用ServletActionContext
* 使用接口注入方式获取
3. struts2提供获取表单数据方式
* 属性封装
* 模型驱动封装
4. struts2获取数据封装到集合中
* 封装到list集合
* 封装到map集合
1. 结果页面配置
* 全局结果页面:多个action的方法返回值相同,转发到的页面也相同,使用全局结果页面
<global-results>
<result name="success">/index.jsp</result>
</global-results>
* 局部结果页面:action里面的result就是局部结果页面
* result标签type属性
> 默认值:dispatcher 转发
> 重定向:redirect
> 转发到action:chain(一般不用,有缓存问题)
> 重定向到action:redirectAction
2. 在action获取表单提交数据
* 使用ActionContext类获取
/**
* 使用ActionContext类获取
*/
//获取ActionContext对象
ActionContext ac = ActionContext.getContext();
//调用方法得到表单数据 key是表单输入项name属性值,value是输入的值
Map<String, Object> map = ac.getParameters();
Set<String> keys = map.keySet();
for (String key : keys) {
Object[] obj = (Object[]) map.get(key);
System.out.println(Arrays.toString(obj));
}
* 使用ServletActionContext
/**
* 使用ServletActionContext类获取
*/
HttpServletRequest request = ServletActionContext.getRequest();
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username+":"+password);
return NONE;
* 使用接口注入方式获取
实现ServletContextAware接口(一般不用)
3. struts2提供获取表单数据方式
* 属性封装:直接把表单提交的数据封装到action的属性里面(不能直接封装到实体类)
1)在action成员变量位置定义与表单属性name值一样
2)生成get set方法
* 模型驱动封装(重点)
1)action实现接口 ModelDriven
2)需要有实体类
public class Form3Action extends ActionSupport implements ModelDriven<User>{
User user = new User();
@Override
public User getModel() {
return user;
}
public String execute(){
System.out.println(user);
return NONE;
}
3)注意:
> 在一个action中不能同时使用模型驱动和属性封装两种,如果同时使用,执行模型驱动
* 表达式封装(会用,有的书里也将此种封装归为属性封装)
1)在action里面声明实体类
2)生成实体类变量的set和get方法
3)在表单输入项的name属性值里面写表达式形式 user.username
public class Form4Action extends ActionSupport {
//声明实体类
private User user;
//生成实体类set get方法
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;
}
* 比较表达式封装和模型驱动封装
1)不同点:模型驱动只能把数据封装到一个实体类对象里面,表达式封装可以封装到不同对象里面
4. struts2获取数据封装到集合中
* 封装到list集合
在action声明list集合生成set get方法 在表单用 List[0].username
* 封装到map集合
声明map集合,生成get set方法,在表单输入项的name属性值里面写表达式 map['one'].username