- 之前在Web阶段,提交表单都是到Servlet,在Servlet里面,使用request对象的方法获取。request.getParameter(“表单元素的名称”); getParameterMap
- 现在我们要把表单填写的数据提交到Action,但Action本身没有request,不能直接使用request。
- Action中获取表单提交的数据主要有如下三种方式:
- ① 使用ActionContext类
- ② 使用ServletActionContext类
- ③ 使用接口注入的方式实现(基本不用)
使用ActionContext类获取:
Struts2框架提供了ActionContext类来访问ServletAPI,ActionContext是Action执行上下文对象,在ActionContext中保存了Action执行所需要的所有对象,包括parameters,request,session,application等下面列举ActionContext类访问Servlet API 的几个常用方法,具体如表所示:
- Map<String,Object> getParameters()因为这个方法不是静态方法,需要创建ApplicationContext对象
- 这个ApplicationContext类对象不是new出来的,是通过下面这个静态方法获取
- 具体演示:
- ① 创建表单提交表单到action里面
- ② 配合struts.xml文件
- ③ 在action里面使用ActionContext获取到数据
=========================================================================
使用ServletActionContext来访问 (程序员比较喜欢用)
为了直接访问Servlet API,Struts2 框架还提供了ServletActionContext类,该类包含了几个常用的静态方法具体如下:
static HttpServletRequest getRequest():获取Web应用的HttpServletRequest对象
static HttpServletResponse getResponse():获取Web应用的HttpServletResponse
static ServletContext getServletContext():获取Web应用的ServletContext
static PageContext getPageContext():获取Web应用的PageContext对象
接下来,讲解如何通过ServletActionContext来访问Servlet API
- 调用类里面的静态的方法,得到Request对象,login2.jsp如下
-
struts.xml
- LoginAction2
- 控制台结果: