一、OGNL概述
1、什么是OGNL
对象导航图语言(Object Graph Navigation Language),简称OGNL,是应用于Java中的一个开源的表达式语言(Expression Language),它被集成在Struts2等框架中,作用是对数据进行访问,它拥有类型转换、访问对象方法、操作集合对象等功能。
(1)OGNL:对象导航图语言,比EL表达式要强大很多倍的语言。
EL:只能从域对象当中获取数据,从EL的11个对象当中获取对象。${ }
OGEL:调用对象的方法,获取Struts2的值栈的数据。OGNL其实是第三方的表达式语言。
2、为什么学习OGNL
OGNL(Object-Graph Navigation Language),
可以方便地操作对象属性的开源表达式语言,使页面更简洁;
支持运算符(如±*/),比普通的标志具有更高的自由度和更强的功能;
Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势:
支持对象方法调用,如xxx.doSomeSpecial();
支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:
@java.lang.String@format(‘foo %s’, ‘bar’)或@tutorial.MyConstant@APP_NAME;
支持赋值操作和表达式串联,
如price=100, discount=0.8, calculatePrice(price*discount),这个表达式会返回80;
访问OGNL上下文(OGNL context)和ActionContext;
操作集合对象。
可以直接new一个对象
3、OGNL使用的要素
1、表达式:
2、根对象:(Root)
3、Context对象:
二、OGNL在Struts2环境当中的使用(入门)
1、访问对象的方法(引入Struts2的标签)
创建JSP页面在页面当中
2、访问对象的静态方法
静态方法访问在Struts2当中默认是关闭的,需要开启常量。(也就是说默认情况下是不允许静态方法访问)
而Struts2当中的静态常量在
(1)手动开启静态方法访问在struts.xml
(2)在JSP当中通过标签的property来获取对象的静态方法
在浏览器当中访问