码迷,mamicode.com
首页 > 其他好文 > 详细

struts(OGNL)

时间:2015-01-20 10:09:12      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

1. OGNL(Object Graph Navigation Language) ,对象图导航语言

2. OgnlContext(上下文对象) ,存在唯一的叫做根的对象(root) ,可以通过程序设定上下文当中的哪个对象作为根对象。

3. 在 OGNL 中,如果表达式没有使用#号,那么 OGNL 会从根对象中寻找该属性对应的 get 方法, 如果寻找的不是根对象中的属性, 那么则需要

    以#号开头,告诉 OGNL,去寻找你所指定的特定对象中的属性。

4. 当使用 OGNL 调用静态方法的时候, 需要按照如下语法编写表达式:@package.classname@methodname(parameter)

5. 对于 OGNL 来说,java.lang.Math 是其的默认类,如果调用java.lang.Math 的静态方法时, 无需指定类的名字, 比如: @@min(4,10);

6. 对于 OGNL 来说, 数组与集合是一样的, 都是通过下标索引来去访问的。构造集合的时候使用{ … }形式。

7. 使用 OGNL 来处理映射(Map)的语法格式如下所示:#{‘key1’: ‘value1’, ‘key2’: ‘value2’, ‘key3’: ‘value3’};

8. 过滤(filtering) :collection.{? expression}

9. OGNL 针对集合提供了一些伪属性(如 size,isEmpty) ,让我们可以通过属性的方式来调用方法(本质原因在于集合当中的很多方法并不符合 JavaBean 的命名规则),

    但并不是所有的方法都是伪属性,但我么你依然还可以通过调用方法来实现与伪属性相同的目的。

10. 过滤(filtering) ,获取过滤得到的集合中的第一个元素:collection.{^ expression}

11. 过滤(filtering) ,获取过滤得到的集合中的最后一个元素:collection.{$ expression}

12. 在使用过滤操作时,我们通常都会使用#this,该表达式用于代表当前正在迭代的集合中的对象(联想增强的 for 循环)

13. 投影(projection ) :collection.{expression}

14. 过滤与投影之间的差别:类比于数据库中的表,过滤是取行的操作,而投影是取列的操作。

15. 在 Struts2 中有一个称之为值栈的概念(ValueStack) ,如图:

       技术分享

16. 在 在 Struts2 中,根对象就是 ValueStack 。在 在 Struts2 的任何流程当中,ValueStack 中的最顶层对象一定是 Action 对象。

17. parameters,#parameters.username ; request, #request.username ; session, #session.username ; application, #application.username ;

      attr, #attr.username 以上几个对象叫做“命名对象” 。

15. ValueStack 与命名对象的关系图示:

       技术分享

16. 访问静态方法或是静态成员变量的改进。@vs@method //vs代表valueStack

17. 关于 Struts2 标签库属性值的%与#号的关系:

      1). 如果标签的属性值是 OGNL 表达式,那么无需加上%{}。

      2). 如果标签的属性值是字符串类型,那么在字符串当中凡是出现的%{}都会被解析成 OGNL 表达式,解析完毕后再与其他的字符串进行拼接构造出最后的字符串值。

      3). 我们可以在所有的属性值上加%{},这样如果该属性值是 OGNL 表达式,那么标签处理类就会将%{}忽略掉。

 

 参考代码:

 

 

struts(OGNL)

标签:

原文地址:http://www.cnblogs.com/Jtianlin/p/4235189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!