Struts2(二)结果视图,实体封装和访问Servlet的API
2018-03-15 18:08
597 查看
一.结果视图的配置
Action标签中result标签的type类型
<action name="customer_*" class="com.cuixiaoming.action.CustomerAction" method="{1}"> <result name="success" >/jsp/customer/list.jsp</result> <result name="addSuccess" type="chain">customer_list</result> </action>
结果视图,简单来说就是Action运行完成后显示结果的页面(广义上的),可以是静态页面,也可以是另一个Action
- dispatcher Action—–请求转发—->视图
- redirect Action—–重定向——->视图
- chain Action——请求转发—>Action
- redirectAction Action—–重定向——->Action
Action到Action的时候,标签内写Action标签中的name值,比如customer_list
局部结果和全局结果
局部结果:只有当前Action可以访问的结果,配置在Action标签内-
<results>
全局结果:该包所有Action都可以访问的结果,配置在package标签内,和Action平级,但是要配置在所有Action之前
-
<global_results>
- 需要注意的是,当局部结果与全局结果重名时,使用局部结果
二.访问Servlet的API的三种方式
通过ServletActionContext获取Servlet相关对象(常用)
request(直接get)response(直接get)
session(通过requestget)
servletContext(直接get)
- 注意获取的request是包装类,response仍然是原来的
通过接口注入的方式获得Servlet相关对象(需要掌握该方式的思想)
实现ServletRequestAware接口和ServletResponseAware接口重写方法,框架自动创建request和response传入
将他们向上向上抽取,就可以在其他方法中使用他们了
同样的道理ServletContext也可以获取到
注入就是set
完全解耦合的方式操作域对象的储存部分(需要掌握该方式的思想)
用ActionContext.getContext()获取一个ActionContext直接put方法操作request范围的数据
使用getSession()获取Session范围的map集合,存数据也是put
使用getApplication()获取ServletContext范围的map集合,存数据也是put
三.实体的封装
ognl表达式 XXX[1].XXX.XXX 类似EL表达式1.属性驱动
1.1获取普通参数
在Action中设置成员变量,提供set方法,Struts2会自动将相应的值赋值给字段1.2获取实体对象
在Action中设置对象和其成员变量的成员变量,并提供set方法(如果对象的成员变量大于一个,需要提供get方法,因为对象成员变量的值需要设置进同一个对象中,所以需要get方法)在前端表单配置name属性时,使用对象名.名字
如果对象里面仍然封装了对象,不用把里面的对象在该Action中设置成成员变量(对象的字段全部不用配了,也就是说只把最高层次的设置成Action的成员变量,下面集合也适用)
如果Action设置的是集合,全段表单name属性,使用 集合名[索引] 的形式
2.模型驱动(平时用的多)
Action实现ModelDriven<模型对象泛型>接口,实现getModel方法.同样的,也需要将模型对象配置成Action的成员变量,并在后面直接new出来,不需要get/set方法前端表单的name直接模型对象的成员变量即可
(四)interceptor拦截器
Struts2在运行Action之前和之后都会适用拦截器对功能进行增强,使用的拦截器配置在包继承的那个配置文件里面相关文章推荐
- Struts2(二)— Result结果配置、Servlet的API的访问、模型驱动、属性驱动
- struts2,转发、重定向,访问servletAPI、获取表单参数
- (转)Struts2访问Servlet的API及......
- Struts2_008_Servlet API耦合的访问方式值之ServletActionContext
- Struts2_009_Servlet API耦合的访问方式值之ServletXxxAware
- Struts2的结果类型、ServletAPI获取、参数接收
- 传智播客-struts2(3)-Servlet API访问、拦截器以及struts2的小bug
- struts2中耦合访问servlet- API
- Struts2的结果类型、ServletAPI获取、参数接收
- struts2_全局结果视图_参数封装
- Struts2系列:(5)与Servlet API解耦(Servlet相关对象访问)
- Struts2:访问Servlet API
- Struts2之访问Servlet的API
- struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式
- Struts2中对Servlet API的访问
- struts2学习笔记之六(Action访问servlet的API以及复制项目小技巧)
- Struts2自定义结果视图(servlet验证码)
- Struts2 访问 Servlet API 的四种方式
- JAVAEE学习——struts2_02:结果跳转方式、访问servletAPI方式、获得参数以及封装、练习:添加客户
- struts2访问servlet的API