值栈的内部结构

值栈有两部分组成:
1、root 底层是List集合,Struts把动作和相关对象放在这里。ObjectStruts
2、context 底层是map集合,Struts把各种映射关系或者map类型的对象放在这里。ContextMap
详解:
* Struts会默认把下面这些映射压入ContextMap(context)中
* 注意:request代表的是Map集合的key值,value的值其实也是一个Map集合,也可以说是一个大map,里面还装着一个小map。
request是字符串,不是对象,这个可以是任意值。

> parameters: 该 Map 中包含当前请求的请求参数 ?name=xxx&password=123
> request: 该 Map 中包含当前 request 对象中的所有属性
> session: 该 Map 中包含当前 session 对象中的所有属性
> application:该 Map 中包含当前 application 对象中的所有属性
> attr: 该 Map 按如下顺序来检索某个属性: request, session, application

下面图片是解释上面放在context的具体位置:

如果从root栈中获取值,OGNL表达式默认情况下是不能写"#"号的。
如:<s:property value="username"/>


如果从context栈中获取值,OGNL表达式默认情况下是需要加"#"号的。
如:<s:property value="#username"/>

注意:以后操作值栈,默认情况下是操作root栈的。

原文地址:https://www.cnblogs.com/tidhy/p/6715248.html