您的位置:首页 > 编程语言 > Java开发

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之前和之后都会适用拦截器对功能进行增强,使用的拦截器配置在包继承的那个配置文件里面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息