OGNL(Object Graphic Navigation Language,对象图导航语言)是一种功能强大的EL(Expression Language,表达式语言,JSP2.0规范),Struts2的核心表达式语言,OGNL是一个开源JAVA项目,但因为使用Struts2,我们完全不需要知道OGNL到底里面是什么东东,只需要按照Struts2的规则知道如何使用就OK了!第二章已经说过(请参看第二章的OGNL结构图),Struts2将Action中的实例压入值栈(ValueStack,值栈,Struts2的根对象,可以把它简单的理解为List,只不过它遵循堆栈的特点,先进后出!),session等放入Context Map中,然后使用OGNL遍历对象结构图进行操作。

在JSP中,session、request、application、attr(如果可以就从pageContext查找,否则就依次到request、session、application中查找)、parameters(用于取URL上的参数,同名的变量可以使用索引)等对象取值时要使用前缀 # 告诉Struts2不要到值栈中查找,例如:(1.)#session.infomation,#session[‘student-information’],OGNL中使用 . 或者[‘’]访问对象的属性,两者的区别是当属性中有“-”等特殊字符时,我们需要使用[‘’];
(2.)URL为http://locaohost:9999/struts01/HelloWorld.ok?name=gold&&password=jsmart,如果我想取name的值,需要这样写#parameters.name,取password的值就是#parameters.password;如果是http://localhost:9999/struts01/HelloWorld.ok?password=gold&&password=jsmart,#parameters.password[0]取的就是gold,#parameters.password[1]=jsmart;
(3.)%{A}所有基于这种形式的内容,都会被解析并到值栈中求值,也就是会到Value Stack中查找A所代表的值;如果你想A被当作字符串原样传递,那么可以这样表示%{‘A’},当然你直接使用A有的时候也是可以的,但为了通用性,建议使用%{‘A’},以免产生不必要的麻烦。
(4.)OGNL操作集合,例如值栈中存在map,我们可以这样访问map[‘a’],表示访问Map中key值为a的value值是多少,map.size访问大小等等。
(5.)OGNL访问类中的静态变量和静态方法:@完整类名@属性名,@完整类名@方法名,例如:
Package net.ilkj.ognl
Public Class A{
Public static final String a=”1”;

Public static String findA()
{
Return “2”;
}
,我们就可以在页面上使用<:sproperty value=”@net.ilkj.ognl.A@a”/>尽心输出!

从上面可以看出,在Struts2中使用OGNL,可以简单看作就是对象.属性。

文章来源:wiki

OGNL表达式语言浅谈相关推荐

  1. OGNL表达式语言中的#和$的区别

    Struts2使用标准的Context来进行OGNL表达式语言求值,OGNL的顶级对象是一个Context,这个Context对象就是一个Map类型实例,其根对象就是 ValueStack,如果需要访 ...

  2. Struts2中使用OGNL表达式语言访问静态方法和静态属性以及我遇到的问题和解决方法

    1.上一篇文章,我介绍了OGNL表达式语言,本来想在那篇文章上加上一个使用OGNL访问静态方法和静态属性的例子,但是昨天晚上我写代码时,报了一个警告,获取得到静态属性的值,却获取不到静态方法的返回值, ...

  3. Struts2的OGNL表达式语言

    支持Struts2的OGNL表达式语言(2009-04-25 01:11:36) <script></script> 标签:struts2 ognl it  分类:Spring ...

  4. Struts2之OGNL表达式语言

    1.OGNL是Object-Graph Navigation Language的缩写,是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构 ...

  5. OGNL表达式语言介绍

    OGNL介绍 OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达 ...

  6. java里什么是三目表达式_浅谈Java三目运算

    三目条件运算公式为 x?y:z  其中x的运算结果为boolean类型,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值 例:String s=" ...

  7. tlv c语言,浅谈自定义通讯协议——TLV | 求索阁

    所谓通讯协议就是指通信双方对数据传送控制的一种约定.约定中包括对数据格式,同步方式,传送速度,传送步骤,纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守,倘若一方不遵守,便会直接导致数 ...

  8. C语言 浅谈可变参数

    1.可变参数产生原因 首先来看一个简单的例子. int Add(int x, int y) {return x + y; } int main() {int sum = 0;sum = Add(1, ...

  9. C语言-浅谈文件IO

    文章目录 文件IO 1.文件io的特点 2.文件io的操作步骤 2.1打开文件 2.2关闭文件 2.3 操作文件 2.4 其他函数 文件IO 1.文件io的特点 (1)文件描述符(非负的整数) (2) ...

最新文章

  1. pretty_errors_python
  2. 【Shell】使用记录
  3. 大话设计模式—代理模式
  4. 优先级队列 c语言,使用最小堆使用优先级队列(c语言版本)
  5. 解决SQL Server 2008安装时提示:重新启动计算机 失败
  6. VS2008中使用JSONCPP方法小结
  7. 单位矩阵属性(I ^ k = I)| 使用Python的线性代数
  8. GRPC编译安装及测试
  9. java 如何将异常_java中的异常处理
  10. C语言简易贪吃蛇(附完整代码)
  11. php获取客户端IP和php获取服务器端IP
  12. Axure中继器使用
  13. HTML 限制文本框只能输入数字 onkeyup+onafterpaste
  14. java take,Java DelayQueue take()用法及代码示例
  15. 一个由三角形引出的乘积恒等式
  16. 李笑来python自学_自学是门手艺--李笑来
  17. 豆瓣图书排行250抓取练习
  18. Remoting简单实例[]
  19. 什么叫视听思维,如何训练视听思维?(周传基)
  20. open /run/flannel/subnet.env: no such file or directory

热门文章

  1. (一)、Spring Security OAuth2 五种授权方式介绍
  2. openvz学习笔记
  3. Visual Studio工具集相关(MSBuild)
  4. iOS开发之DataSource神奇魔法,优雅的写法让你轻松驾驭TableView
  5. 26平移-XY轴平移——html
  6. java初级工作总结_【Java初级程序员工作总结_Java初级程序员个人年终总结】-看准网...
  7. matlab在数字传输系统,数字基带传输系统matlab仿真.doc
  8. EAI激光雷达X4使用gmapping与laser_scan_matcher建图(一)
  9. 固定td宽度令其不随内容改变以及固定tr的高度
  10. 论文阅读——Unsupervised Neural Machine Translation with Indirect Supervision