OGNL语言解析
来源:互联网 发布:雷云mac版安装失败 编辑:程序博客网 时间:2024/04/30 17:21
OGNL是Struts中用来在视图层访问数据的一种语言,使用了OGNL,你会发现在视图层访问数据相当方便,这会大大地节省开发的时间,并且只需要很小的代码量,就能访问非常复杂的数据,使得代码维护起来也容易。不过,有点遗憾的是,OGNL目前只能在Struts下使用。
OGNL的数据组成
既然OGNL是访问数据的,那肯定就有存放数据的地方,这个地方就是OGNL Context。OGNL Context由两个部分组成,一部分是Object Stack,你把它想象成栈就可以了,后入的数据会被存放在栈顶部;另外一部分是一个Map,存放键值对。
OGNL访问数据的几个符号
要使用OGNL,那么就常常会跟以下的五个符号打交道:
%、#、.(点号)、[]、{}
- %,显式标明当前内容的是一个OGNL表达式
- #,用来访问Map中的数据
- .(点号),用来调用这个对象的getter方法,并取得返回值
- [],用来跟数字一起使用,[0]表示的是Object Stack的顶部对象
- {},标明当前内部内容的是一个表达式
OGNL的Object Stack
在Object Stack当中,存放的通常是Action接口的实现类对象,因为每当我们请求一次动作,Struts就会把这个动作的实例压入到栈的顶部。举个例子,那用户登录这项功能来说,用户登录时请求了名为LoginAction的动作,那么这个动作的实例就会被存放在Object实例的顶部。在视图层,访问Object Stack中的数据要使用[],我们就可以使用[0].property来访问在Object Stack栈顶部的对象的属性(当然,访问这个属性是调用getter方法来访问的)。当你的请求要经过一条动作链时(action chain),那么所有的动作实例都会被压入栈中,而栈的顶部是最后压入的动作实例,此时,顺序使用[0]访问最后一个动作实例,[1]访问倒数第二个动作的实例。
OGNL的Map
在视图层,访问Map中的数据要使用#。在Map中,为我们内置了一些对象,供我们方便访问:
- parameters,请求参数,这其实就是一个字符串数组
- request,HttpServletRequest的实例
- response,HttpServletResponse的实例
- application,ServletContext的实例
总结
很多人在刚刚学习OGNL的时候会一头雾水,不知道什么数据是存放在哪里的,从而在想访问自己想要的数据的时候不知道应该怎么样去写表达式,包括本人最初学习的时候也是这种情况。本篇文章主要是讲解理论,所以这里不会附加很多的例子。总之,要使用OGNL,首先弄清楚数据是存放在哪里的,那么就很容易写出对应的表达式了。
- OGNL语言解析
- ognl深度解析 (对象图导航语言)
- OGNL解析
- OGNL语言
- ognl语言
- OGNL语言
- ognl语言
- OGNL & ValueStack解析
- OGNL表达式语言介绍
- OGNL表达式语言介绍
- OGNL表达式语言
- OGNL表达式语言介绍
- OGNL表达式语言
- ognl表达式语言
- 六、OGNL表达式语言
- OGNL表达式语言
- OGNL表达式语言学习
- OGNL表达式语言1
- 九度 1207
- android广告平台SDK研发日志(一)
- Javascript Leanring Function(3)
- 省赛小感想
- 第11周 项目一1.1 班长和学生的信息 对类进行继承
- OGNL语言解析
- 求多个选择情况下的函数值
- poj3897
- C#使用多维数组
- 本地表、远程表的复制操作(SQL命令行)
- OpenCV2马拉松第15圈——边缘检测(Laplace算子,LOG算子)
- leetcode Linked List Cycle & Linked List Cycle II
- 如何搭建私有云平台
- Google CodeJam 2014 Round 1C