valueStack 是ActionContext的一个组成部分
ActionContext 所表现出来的是空间的概念,恰好成为数据载体进行存储的天然基石
ActionContext是XWork的数据流实现元素,作为一个数据载体,他既可以负责数据存储,又负责数据共享
ValueStack是一个具备表达式引擎计算能力的数据结构
XWork将ValueStack置于ActionContext中的目的在于为静态的数据添加动态计算的功能
ActionContext无法脱离ValueStack而单独存在,否则所有的数据载体就如一滩死水,失去流动性的数据流,只能称之为数据载体而非数据流
ValueStack无法脱离ActionContext而单独存在,否则ValueStack就 没有了数据计算的基础,失去了数据的数据流,只能称之为一个表达式计算工具而非数据流
事件处理节点和驱动元素
在XWork的控制流中,事件处理驱动元素对事件处理节点元素形成调用关系
主力部队和策应部队
在整个栈结构中,除了位于栈底的action以外,栈中的其他元素都是Interceptor对象
由于Action位于栈的底部,根据栈结构的 先进后出的特性,当试图把action对象拿出来的执行时,我们必须首先把Action之上的所有Interception依次拿出来执行
每个位于栈中的Interceptor,除了需要完成他自身的逻辑外,还需要指定下一步的执行对象
这里表现了
对应事件处理,能够进行进一步的规范化的流程细化
对于细化的流程,能够具备高度的可扩展性
流程细化后的事件处理节点之间表现出明显的执行层次
被封装的SessionMap等对象,能够进一步保证数据访问的线程安全性
保持所有存储对象的Map结构,可以统一数据访问方式
ValueStack是XWork对OGNL所做的重要扩展,使得在Struts2在使用ValueStack进行OGNL计算时,可以将一组对象都视为Root对象
ValueStack是一个被设计成 栈的数据结构,并且还是一个具备表达式引擎计算能力的数据结构
ValueStack是XWork框架进行OGNL计算的场所
ValueStack是XWork框架进行数据访问的基础
从栈的顶端开始对每个栈内元素进行表达式匹配计算,并返回第一个成功匹配的计算结果
ValueStack对OGNL的计算规则是栈内元素遍历 栈内元素遍历的结果是返回第一个满足OGNL表达式运算的结果值
一个大小为n的valueStack,除了自身外,有n-1个子栈
每一个子栈自身也是valueStack,相对ValueStack形成一个递归的数据结构
对于有状态的响应类,响应类的属性变量是描述自身状态的核心元素,也是响应方法进行逻辑处理的核心数据依赖
interceptor
切面aspect interceptor 实现
通知类型 advice 环绕通知 around通知
切入点pointcut action 对象
连接点joinpoint action的执行