struts2--值栈

  值栈是对应每一个请求对象的轻量级的数据存储中心,在这里统一管理着数据,供Action、Result、Interceptor等Struts2的其他部分使用,这样数据被集中管理起来而不凌乱。当有请求的时候,Struts2会为每个请求创建一个新的值栈,也就是说,栈和请求是一一对应的,不同的请求,值栈也不一样,而值栈封装了一次请求所有需要操作的相关的数据。

  值栈(ValueStack):包括对象栈(ObjectStack)和ContextMap

  对象栈(ObjectStack):把Action相关的对象放入其中,本质就是个数据结构意义上的栈

  Map栈(ContextMap):实际上是ActionContext的一个引用,(把各种属性(或对象)的映射关系放入其中),主要有

              requestMap,sessionMap,applicationMap,parametersMap            

  利用<s:property>标签和OGNLB表达式来读取值栈中属性值

    对于对象栈:获取对象栈中某个对象的属性值

      读取对象的属性:object.propertyname(object 用[n]表示,n代表从栈顶开始搜索的第n+1个对象)

      例如<s:property value="[0].message" /> 表示栈顶对象的属性,此时栈顶对象可以省略不写,变成<s:property value=“message" />

         <s:property value="[1].message" />表示栈的第2 个对象的属性

    对于Map栈:读取Map栈的属性

      <s:property value="#session.对象.属性" />

      

原文地址:https://www.cnblogs.com/cowboys/p/5407172.html