struts框架值栈问题二之值栈的内部结构

2. 问题二 : 值栈的内部结构 ?
    * 值栈由两部分组成
        > root      -- Struts把动作和相关对象压入 ObjectStack 中--List
        > context   -- Struts把各种各样的映射关系(些 Map 类型的对象) 压入 ContextMap 中

    * Struts会默认把下面这些映射压入ContextMap(context)中
        * 注意:request代表的是Map集合的key值,value的值其实也是一个Map集合。

        > parameters: 该 Map 中包含当前请求的请求参数  ?name=xxx&password=123
        > request: 该 Map 中包含当前 request 对象中的所有属性
        > session: 该 Map 中包含当前 session 对象中的所有属性
        > application:该 Map 中包含当前 application  对象中的所有属性
        > attr: 该 Map 按如下顺序来检索某个属性: request, session, application
  值栈一创建里面就有很多值,但是这些值不是我们需要使用的。
    * ValueStack中 存在root属性 (CompoundRoot) 、 context 属性 (OgnlContext )
        > CompoundRoot 就是ArrayList
        > OgnlContext 就是 Map

    * context 对应Map 引入 root对象 
        > context中还存在 request、 session、application、 attr、 parameters 对象引用 
        > OGNL表达式访问值栈中的数据
            * 访问root中数据时 不需要 #
            * 访问 request、 session、application、 attr、 parameters 对象数据 必须写 # 

        > 操作值栈 默认指 操作 root 元素
原文地址:https://www.cnblogs.com/wyhluckdog/p/10124438.html