1. struts2 Action获取表单提交数据
主要有三种方式:
1.1 使用ActionContext类
//获取actionContext对象 ActionContext context = ActionContext.getContext(); Mapmap = context.getParameters(); Set keys = map.keySet(); for (String key : keys) { Object[] obj = (Object[]) map.get(key); //数组形式:因为输入项里面可能有复选框的情况 System.out.println(Arrays.toString(obj)); }
1.2. 使用ServletActionContext类
HttpServletRequest request = ServletActionContext.getRequest(); String username = request.getParameter("username");
1.3. 使用接口注入方式
public class LoginAction extends ActionSupport implements ServletRequestAware{ private HttpServletRequest request; public void setServletRequest(HttpServletRequest request) { // TODO Auto-generated method stub this.request = request; } @Override public String execute() throws Exception { String username = request.getParameter("username"); return super.execute(); }
2. 在action中操作域对象
Struts2封装获取表单数据方式
1.1 原始方式获取表单封装到实体类对象
1.2 属性封装(会用)
1.3 模型驱动封装(重点)
1.4 表达式封装(会用)
比较表达式封装和模型驱动封装
1 使用表达式封装和模型驱动封装都可以把数据封装到实体类对象里面
2 不同点:
(1)使用模型驱动只能把数据封装到一个实体类对象里面
- 在一个action里面不能使用模型驱动把数据封装到不同的实体类对象里面
(2)使用表达式封装可以把数据封装到不同的实体类对象里面
1.5 封装到集合里面
在表单中取出集合元素的第一种方式
在表单中取出集合元素的第二种方式
在表单中取出集合元素的第三种方式
1.6 封装数据到Map集合
获取值栈对象
(1)每次访问action时候,都会创建action对象,
(2)在每个action对象里面都会有一个值栈对象(只有一个)
1 值栈分为两部分:
第一部分 root,结构是list集合
(1)一般操作都是root里面数据
第二部分 context,结构map集合
向值栈放数据
第一种 获取值栈对象,调用值栈对象里面的 set 方法
第二种 获取值栈对象,调用值栈对象里面的 push方法
向值栈放对象
向值栈放list集合
从值栈获取数据
获取对象
其他操作
1 使用set方法向值栈放数据,获取
2 使用push方法向值栈放数据,获取
向request域放值
1 在struts2标签中表单标签
(1)在struts2标签里面使用ognl表达式,如果直接在struts2表单标签里面使用ognl表达式不识别,只有%之后才会识别。
案例-列表功能改造(值栈)