ValueStack、OGNL和Struts2标签
2016-03-03 11:31
141 查看
一、ValueStack
1.ValueStack(值栈): 贯穿整个 Action 的生命周期(每个 Action 类的对象实例都拥有一个 ValueStack对象). 相当于一个数据的中转站.
在其中保存当前Action 对象和其他相关对象.
2.Struts 框架把 ValueStack对象保存在名为“struts.valueStack” 的请求属性中
3.在 ValueStack 对象的内部有两个逻辑部分:
ObjectStack:实际上是CompoundRoot类型,是一个使用ArrayList定义的栈。Struts 把 Action 和相关对象压入 ObjectStack 中。是一个数据结构意义的栈。
ContextMap:实际上是OgnlContext类型,是个Map,也是对 ActionContext 的一个引用。Struts 把各种各样的映射关系(一些 Map 类型的对象) 压入 ContextMap 中。。
Struts 会把下面这些映射压入 ContextMap中
parameters: 该 Map 中包含当前请求的请求参数
request: 该 Map 中包含当前 request对象中的所有属性
session: 该 Map 中包含当前 session 对象中的所有属性
application:该 Map 中包含当前 application 对象中的所有属性
attr: 该 Map 按如下顺序来检索某个属性: request, session, application
默认情况下,Action对象会被struts2 自动的放到值栈的顶端
二、OGNL
在 JSP 页面上可以可以利用OGNL(Object-Graph Navigation Language: 对象-图导航语言) 访问到值栈(ValueStack)里的对象属性.
若希望访问值栈中ContextMap 中的数据, 需要给 OGNL 表达式加上一个前缀字符#.
例如<s:property value="#session.user.username">
如果没有前缀字符 #, 搜索将在 ObjectStack 里进行.
例如<s:property value="username">
1.ValueStack(值栈): 贯穿整个 Action 的生命周期(每个 Action 类的对象实例都拥有一个 ValueStack对象). 相当于一个数据的中转站.
在其中保存当前Action 对象和其他相关对象.
2.Struts 框架把 ValueStack对象保存在名为“struts.valueStack” 的请求属性中
3.在 ValueStack 对象的内部有两个逻辑部分:
ObjectStack:实际上是CompoundRoot类型,是一个使用ArrayList定义的栈。Struts 把 Action 和相关对象压入 ObjectStack 中。是一个数据结构意义的栈。
ContextMap:实际上是OgnlContext类型,是个Map,也是对 ActionContext 的一个引用。Struts 把各种各样的映射关系(一些 Map 类型的对象) 压入 ContextMap 中。。
Struts 会把下面这些映射压入 ContextMap中
parameters: 该 Map 中包含当前请求的请求参数
request: 该 Map 中包含当前 request对象中的所有属性
session: 该 Map 中包含当前 session 对象中的所有属性
application:该 Map 中包含当前 application 对象中的所有属性
attr: 该 Map 按如下顺序来检索某个属性: request, session, application
默认情况下,Action对象会被struts2 自动的放到值栈的顶端
二、OGNL
在 JSP 页面上可以可以利用OGNL(Object-Graph Navigation Language: 对象-图导航语言) 访问到值栈(ValueStack)里的对象属性.
若希望访问值栈中ContextMap 中的数据, 需要给 OGNL 表达式加上一个前缀字符#.
例如<s:property value="#session.user.username">
如果没有前缀字符 #, 搜索将在 ObjectStack 里进行.
例如<s:property value="username">
相关文章推荐
- Leetcode:263. Ugly Number(JAVA)
- eclipse调试java程序的九个技巧
- Java中静态成员
- Java中的静态内部类与非静态内部类的区别
- java加时间
- ECLIPSE下SVN的创建分支/合并/切换使用
- win7上使用eclipse阅读hadoop源码准备
- JNI————C中调用JAVA方法错误和注意的地方
- Java泛型类型参数的界限
- Leetcode:70. Climbing Stairs(JAVA)
- Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)
- Java正则解析HTML一例
- Java基于UDP协议的简单通讯实例
- 【leetcode】【88】Merge Sorted Array
- Java中HashMap和TreeMap的区别(未完待续)
- java .map()
- eclipse下安装pdt进行php项目
- Java泛型类的继承关系
- Hadoop集群(第7期)_Eclipse开发环境设置
- java arrays类学习