在action获取表单提交数据
1.使用ActionContext类获取
ActionContext actionContext = ActionContext.getContext();
Map<String,Object> paramMap = actionContext.getParameters();
2.使用ServletActionContext类获取
HttpServletRequest request = ServletActionContext.getRequest();
Map<Object,Object> paramMap = request.getParameterMap();
3.实现接口获取(了解)
public class UserFormAction extends ActionSupport implements ServletRequestAware{
private HttpServletRequest request;
@Override
public void setServletRequest(HttpServletRequest httpServletRequest) {
this.request = httpServletRequest;
}
.....
}
4.属性封装
* 属性封装普通数据类型
(1)在Action类中提供private属性,以及getter/setter方法
(2)表单项中提交数据的name属性值与Action类属性值一致,即可自动完成对Action类属性赋值
private String username;
private String password;
* 属性封装Bean对象方式一:
(1)在Action类中提供private对象的属性,以及getter/setter方法
(2)表单项中提交数据的name属性值与Action类对象属性值一致,username password
(3)创建Bean对象,调用setter方法,手动完成封装
private String username;
private String password;
* 属性封装Bean对象方式二:
(1)在Action类中提供private Bean对象,以及getter/setter方法
(2)表单项中提交数据的name属性值使用ognl写法, user.username user.password
private User user;
* 属性封装List集合
(1)在Action类中提供private List属性,以及getter/setter方法
(2)表单项使用ognl表达式写法, userList[0].username userList[1].username
private List<User> userList;
* 属性封装Map集合
(1)在Action类中提供private Map属性,以及getter/setter方法
(2)表单项使用ognl表达式写法, userMap['one'].username userMap['two'].username
private Map<String,User> userMap;
5.模型驱动封装
* 模型驱动封装bean对象
(1)Action类继承ActionSupport,实现ModelDriven<T>接口,重写getModel()方法
public class Data3Action extends ActionSupport implements ModelDriven<User>{
private User user = new User();
@Override
public User getModel() {
return user;
}
}
(2)表单提交数据的name属性值与bean对象属性值一致,username password
注意:
属性封装实体类不需要创建,提供getter/setter方法即可
模型驱动封装的实体类必须手动创建,不需要getter/setter方法
如果一个Action类中的属性,既使用了属性封装,又使用了模型封装;只有模型封装成功,属性封装为null
全局结果页面如果冲突局部结果页面,以局部为准'
属性封装可以: user.username 完成封装
2 结果配置
(1)result标签type属性
3 struts2提供获取表单数据方式
(1)属性封装
(2)模型驱动封装
4 struts2获取数据封装到集合中
(1)list集合
(2)map集合
复杂参数封装
结果页面result配置
1.全局结果页面配置
<struts>
<package>
<global-results>
<result name="success">/success.jsp</result>
</global-results>
<action>
</action>
</package>
</struts>
2.局部结果页面配置
<action>
<result name="success">/success.jsp</result>
</action>
如果局部结果页面与全局结果页面产生冲突,局部结果页面优先级高于全局结果页面
3.result表的type属性
- dispatcher,默认值,表示请求转发到result标签指定的页面
<action>
<result name="success" type="dispatcher">/success.jsp</result>
</action>
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e27c2cf8b3c9e02b0aaf19340bd02b39.png)