当前位置:首页 > 幼儿教育 > 正文

简述OGNL在框架中的作用?

EL表达式主要功能:用于访pageContext,request,session,application范围内存储的数据。

OGNL不仅可以访问数据,还具有访问方法,对集合进行操作等功能。

OGNL是什么?

Object Graphics Navigation Language 对象图导航语言。主要作用是对一些复杂对象的属性和方法进行访问。

OGNL技术可以独立使用,封装在ognl.jar开发包中。

2)OGNL工作原理

OGNL工具由三部分构成,分别是

a. OGNL引擎:负责解释执行OGNL表达式,按表达式区root或map区域寻找数据。

b. Root根对象区域:访问该区域数据OGNL表达式简洁方便。适合放置访问频繁的对象元素。

c. Map对象存储区 :访问该区域需要使用“#key”访问。适合放置访问不频繁的对象元素。

使用时,给OGNL引擎指定一个表达式,该引擎根据表达式去Root区或Map区访问对象的属性或方法。

*3)OGNL表达式语法

a.访问Root对象某个简单属性

表达式: "属性名"

b.访问Root对象某个数组或者List集合

表达式:"属性名[0]"

c.访问Root对象某个Map集合

表达式:"属性名.key"或者"属性名['key']"

d.访问Root对象某个复合类型属性address

表达式: "address.子属性"

e.访问Root对象某个复杂属性 List addresses

表达式:"addresses[0].子属性"

f.访问Root对象的某个属性的方法

表达式:"属性名.方法()"

g.支持Java中的表达式和运算符

h.定义一个List常量

表达式:{"A","B","C"}

i.定义一个Map常量

表达式:#{"key1":value1,"key2":value2}

j.访问静态常量或方法

表达式:"@包名.类型@常量名或方法"

上述语法如果访问Map区域一样使用,只要注意追加"#key".

el表达式是什么?

一种简单的计算规则,用于给标签的属性赋值,现在,也可以直接输出。

(1)访问bean的属性。

方式一:

${user.name} : 容器会依次从pageContext,request,session,application查找绑订名称为"user"的对象(即调用getAttribute方法),找到后,调用该对象的getName方法并输出。如果值为null,会转换成""输出;

另外,如果找不到该对象,也会输出""。

如果要指定查找范围,可以使用pageScope,requestScope,sessionScope,applicationScope,比如:${sessionScope.user.name}

方式二:

${user["name"]}

这种方式允许[]里出现变量或者序号(从0开始,用来访问数组中的元素)

(2)进行一些简单的计算,计算结果可以直接输出,也可以给标签的属性赋值。

1)算术运算: "+","-","*","/","%"。注意"+"只能进行加法操作,不能进行连接操作。

2)关系运算:">",">=","