struts2中几个核心的组件ActionContext、ValueStack、OGNL表达式
来源:互联网 发布:网络乌拉是什么意思 编辑:程序博客网 时间:2024/04/28 19:09
转自:http://www.iteye.com/topic/1126455
1、ActionContext
当struts2框架接收到一个HTTP请求时,它立刻创建一个ActionContext、ValueStack、Action对象
ActionContext里有6个对象,分别是valueStack、parameters、request、session、application、attr
一个OGNL表达式,必须选择ActionContext中的一个对象作为根对象(root),默认情况下,是选择valueStack作为根对象,如果需要使用另外5个对象作为根对象,需要加上#前缀
例如:
- <s:property value="#session.xxx" />
如果不加#前缀,则默认使用valueStack作为根对象,这也是最常见的情况,即#valueStack.xxx,相当于xxx
2、ValueStack(值栈)
ValueStack中可以存储很多对象,它的一个特性是,它是一个虚拟对象,它可以将自己持有的对象的属性,当成是自己的属性
比如说,ValueStack中有一个Action对象,而Action对象有一个name字段。那么当用OGNL表达式取name的值的时候,不需要${action.name},而是可以直接${name}
ValueStack是一个栈的数据结构(FILO),最后进入值栈的对象,总是在ValueStack的栈顶,这个结论很重要,因为栈顶的元素的值,会覆盖栈底的同名元素的值。
比如说,ValueStack的栈底是一个Action对象,持有一个name字段;栈顶是一个Model对象,也持有一个name字段,那么用${name},取出来的永远是Model对象的name字段,Action对象的name字段是不可见的
3、OGNL表达式
这个可以分为2种场景,一种是在<s:>标签的属性里(比如<s:property value="" />),一种是在jsp页面的其他地方
在<s:>标签的属性里时,要看这个属性定义的类型是什么,如果是string类型,那么属性的值会被当做普通的string,如果不是string类型,那么属性的值会被直接当成OGNL的表达式
比如说<s:property value="" />,这个标签的value属性的类型是object,那么这个value的值,就会被直接作为OGNL表达式进行解析
如果想在string类型的属性中使用OGNL表达式,就需要加上${}或者%{}
在jsp页面的其他地方时(即不在<s:>标签内部),任何情况下都会当成string来处理,这时候如果想使用OGNL表达式,也需要加上${}或者%{}
4、关于${}和%{}的区别
根据文档里的描述,OGNL表达式应该用%{}来表示。可是我在实际应用中,基本不会使用<s:>标签,并且都是用${}来取值的,也没有发现任何不妥,不知道是不是版本的原因
- struts2中几个核心的组件ActionContext、ValueStack、OGNL表达式
- struts2中几个核心的组件ActionContext、ValueStack、OGNL表达式
- Struts2 ValueStack & ActionContext & OGNL 关系
- 关于Struts2中的ValueStack,ActionContext,OgnlContext的理解之一:OGNL
- Struts2-day02 获取Servlet API OGNL表达式 ValueStack ActionContext ValueStack存数据 取数据 Interceptor
- Struts2中OGNL,valueStack,stackContext的学习
- Struts2中OGNL,valueStack,stackContext的学习
- Struts2中OGNL,valueStack,stackContext的学习
- Struts2中OGNL,valueStack,stackContext的学习
- Struts2中OGNL,valueStack,stackContext的学习
- Struts2中OGNL,valueStack,stackContext的学习
- Struts2中OGNL,valueStack,stackContext的学习
- Struts2中OGNL,valueStack,stackContext的学习
- Struts2中OGNL,valueStack,stackContext的学习
- Struts2-Ognl表达式与ValueStack
- 关于Struts2中的ValueStack,ActionContext,OgnlContext的理解之二:Struts2中的OGNL
- OGNL ValueStack ActionContext
- ActionContext、ValueStack、OGNL
- .NET操作Word的实现:using Word
- Hibernate 连接池的三种配置方式:dbcp , c3p0
- 使用sp_monitor 查看SQL Server统计信息
- 日历
- AS编程--初学
- struts2中几个核心的组件ActionContext、ValueStack、OGNL表达式
- javascript 模拟 jquery serialize方法
- POJ 1706
- u-boot for tiny210 ver2.2(by liukun321咕唧咕唧)
- 在两个排序数组中查找第k小元素
- weblogic各个版本对JDK和Spring的支持度
- centos 快速搭建vpn
- 金山界面库分析(7)
- 全面整理CentOS系统使用中文