OGNL学习笔记
OGNL介绍:
1.OGNL(Object Graph Nvigation Language),对象图导航语言
2.OgnlContext(ognl上下文对象),存在唯一的叫根的的对象root,可以通过程序设定上下文当中哪个对象作为根对象
3.在OGNL中,如果表达式没有使用#号,那么OGNL会从根对象中寻找该属性对应的get方法,如果寻找的不是根对象中的属性,那么则需要以#号开头,告诉OGNL,去寻找你所指定对象的属性
OGNL使用:
1.当使用OGNL调用静态方法的时候,需要按照如下的语法编写表达式:
@package.classname@methodname(parmeter)
2.对OGNL来说,数组和集合是一样来看待的,都是通过下标索引去访问的。构造集合的时候使用{. . .}形式
3.使用OGNL处理Map的语法格式如下所示:
#{‘key1’:’value1’,’key2’:’value2’,’key3’:’value3’}有点像json
4.过滤(filtering):collection.{? expression}
5.过滤(filtering):获得第一个元素collection {^expression}
6.过滤(filtering):获得最后一个元素collection {$expression}
7.通常在使用过滤操作的时候,我们会使用到#this,该表达式用于代表当前正在迭代的集合中的对象(类似增强的for循环)
8.投影(projection):collection.{expression}
9.过滤与投影之间的差别:类比于数据库中表,过滤是取行操作(选择),投影是取列操作
10.Struts2.x中有一个称作值栈的概念(ValueStack)非常重要。
11.在Struts2.x中根对象就是ValueStack.在Struts2.x的任何流程中ValueStack中最顶层对象一定是Action对象
12.几个常用的命名对象
parameters, #parameters.username
request, #request.username
session, #session.username
application,#application.username
attr,#attr.username
13.Struts2.x标签库属性值的%与#的关系