ValueStack对象概述
ValueStack对象概述
ValueStack 是 Struts 的一个接口,字面意义为值栈
OgnlValueStack 是 ValueStack 的实现类,客户端发起一个请求 struts2 架构会创建一个action 实例同时创建一个OgnlValueStack 值栈实例,
OgnlValueStack贯穿整个 Action 的生命周期。
请求访问的时候会加载三个东西:
1. ActionContext
2. ContextMap
3. ValueStack的实现类OgnlValueStack
它是 ContextMap 中的一部分,里面的结构是一个 List,是我们可以快速访问数据一个容器。它
的封装是由struts2 框架完成的。
通常情况下我们是从页面上获取数据。它实现了栈的特性(先进后出)
ValueStack的内部结构
在 OnglValueStack 中包含了一个 CompoundRoot 的对象,该对象继承了 ArrayList,并且提供了只能
操作集合第一个元素的方法,所以我们说它实现了栈的特性。
同时,它里面定义了一个 ContextMap的引用,也就是说,我们有值栈对象,也可以通过值栈来获取ContextMap
ContextMap中存有ValueStack,ValueStack中存有ContextMap,方便我们使用
简单来说
- ValueStack是一个List结构
- 通过压栈方式存数据
- 通过struts2标签的ognl表达式根据Property Name获取值栈对应的数据,使用OGNL表达式
- ValueStack存了ContextMap的引用