请描述一下Struts2的值栈结构,以及它是如何工作的?

值栈 Value Stack

值栈是Struts2框架的核心概念。所有的核心组件都以某种方式与之进行交互,它提供对上下文信息和执行环境中元素的访问机制。值栈的内容由如下4个层级组成。

1.临时对象

这些对象在请求处理中需要临时保存,比如集合中当前正在被迭代的元素。

2.模型对象

当action实现了ModelDriven接口,模型对象就会被存放在栈中,在action对象前。如果action没有实现该接口,这个级别的内容将不存在。

3.Action对象

此对象是当前正在执行的action

4.命名对象 即 OGNL上下文环境

任何对象都可以被赋予一个标识符而成为命名对象。Struts2内建的命名对象有:#application#session#request#attr、#parameters

使用值栈不需要压栈和弹栈,可直接使用OGNL表达式来查找或求值。OGNL表达式会在每个层级测试,层级测试的顺序按照层级顺序进行。如果各层级都没有求出结果,那么则返回null值。

Java Program!
原文地址:https://www.cnblogs.com/programb/p/14068259.html