Struts2之Ognl基本操作、过滤、投影解读

声明:最近在找合伙人一块做一个社交类型的APP,有能力者联系QQ:1126427292

一、学习案例:关于上一章的《Hibernate之Ognl详解》的演示项目很多朋友说后面的不是很了解。这一章就暂且做下讲解。

a)根对象就是我们通过context.setRoot(...);设置的对象,我们可以设置多个。

b)#,如果不是根对象就用#取对象,否则直接取对象。

c)调用静态方法需要使用@[email protected]。如:@[email protected](10)。如果是调用Math中的方法,可直接使用@@...。如:@@max(1, 5)

d)对于定义列表或数组直接使用花括号{},如:{‘aa‘, ‘bb‘, ‘cc‘, ‘dd‘},访问数组中元素直接在花括号后面使用索引的方式:{...}.[0]

e)Map的定义使用了#,这个不同于之前讲的#,这个只是用来定义Map类型的。如:#{‘key1‘: ‘value1‘, ‘key2‘: ‘value2‘}[‘key3‘]

f)过滤(filtering):对集合(collection)中的元素按条件经行筛选,返回的对象也是一个集合。

如:#persons.{? #this.name.length() > 4}

表示的是遍历persons中的对象,满足对象中name长度大于4的返回。

1、#persons.{^ #this.name.length() > 4}表示返回满足条件的第一个对象。返回的类型是集合。

2、#persons.{$ #this.name.length() > 4}表示返回满足条件的最后一个对象。返回的类型是集合。

3、#this代表当前正在迭代的集合中的对象。

g)投影(projection):对集合(collection)中的元素按条件经行筛选,返回的对象是对象中的某一属性的一个集合。

1、#persons.{name}表示返回persons集合中每个对象的name属性的集合。返回值为:[zhangsan, lisi, wangwu]

2、#persons.{#this.name.length() <= 5 ? ‘Hello World‘ : #this.name}表示persons集合中对象的name属性值小于等于5的用‘Hello World‘代替,大于5的保持原值,然后以集合的形式返回。

返回值为:[zhangsan, Hello World, wangwu]

h)过滤和投影的区别:过滤是返回的原对象的集合,而投影返回的是原对象中属性的集合。类比于数据库中的表,过滤是取行操作,投影是取列操作。

三、经验之谈:

a)过滤和投影在项目用的很少,不过一旦使用将会有意想不到的效果。关于OGNL的知识了解的也差不多了。后面将会在struts2的标签中进行使用。

四、参考项目:http://download.csdn.net/detail/u011638419/8280245

五、每日一乐:

一群蚂蚁爬上了大象的背,但被摇了下来,只有一只蚂蚁死死地抱着大象的脖子不放,下面的蚂蚁大叫:掐死他,掐死他,小样,还他妈反了!

最终解释权归大学生创业所有。转载请注明出处。@www.23hhr.com

时间: 2024-12-12 21:32:56

Struts2之Ognl基本操作、过滤、投影解读的相关文章

Struts2之OGNL

一.OGNL是什么? OGNL(Object-Graph Navigation Language)对象图导航语言,是一种表达式语言,它可以 1.遍历对象的结构图 2.存取对象的属性(实例属性和静态属性) 3.调用对象的方法(实例方法和静态方法) 4.操作集合对象(数组.List.Map) 5.new对象 (自动初始化,需要无参构造器) 6.自动进行类型转换 -- 总的来说这货就是提供一种简便的方式来进行数据转移和类型转换. 1.数据转移数据从前端页面过来,参数拦截器将它们拍到Action对应的属

struts2的OGNL表达式

基本概念: OGNL(Object Graph Navigation Language),是一种表达式语言.使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性.调用Java对象树的方法.同时能够自动实现必要的类型转化.如果我们把表达式看做是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁. OGNL的API看起来就是两个简单的静态方法: public static Object getValue( Object tree, Map

Struts2对Ognl的支持

                                                  Struts2对Ognl的支持 一. 写作背景 由于工作性质的变化,最近一直在研究struts2,从源码到各个技术点的分析,突然之间发现以前对struts2的ognl这一块的知识覆盖的还不是很全面.再加上笔者身处在深圳这个城市,这些天来一直高温不断,人显得特别的烦躁不安,唯有技术(当然个人爱好还是很广泛的,例如溜冰.篮球.气枪打气球等)能让笔者从燥热中平静下来,故花上几个小时整理了这篇博客,若有失

[JavaEE] 深入理解Struts2的ognl标签

OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能.此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的.OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示.它里面可以存放很多个JavaBean对象.它有一个上下文根对象.上下文中的

深入分析JavaWeb 48 -- Struts2中OGNL表达式与ValueStack

一.OGNL表达式 1.OGNL表达式介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的表达式语言. OGNL相对其它表达式语言具有下面几大优势: 1.支持对象方法调用,如xxx.doSomeSpecial(): 2.支持类静态的方法调用和值访问,表达式的格式: @[类全名(包括包路径)]@[方法名 | 值名],例如:@[email protected]('foo %s', '

【Struts2】Ognl与ValueStack

一.OGNL 1.1 概述 1.2 OGNL 五大类功能 1.3 演示 二.ValueStack 2.1 概述 2.2 ValueStack结构 2.3 结论 2.3 一些问题 三.OGNL表达式常见使用符号 3.1 #号 3.2 %号 3.3 $号 一.OGNL 1.1 概述 OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言.比el表达式功能强大.Struts2将ognl表达式语言,集成当sturts2框架中,做为它的默认表达式语言

Struts2之OGNL表达式

OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.Struts2框架使用OGNL作为默认 的表达式语言. 相对于EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHello(); 支持类静态方法调用和常量值访问,表达式的格式为@[类全名(包括包路径)]@[方法名|值名],例如:@[email protected]('foo%s','bar')或@[email protected]_NAME;

struts2 与 OGNL 表达式,jsp中 利用ognl 在valuestack中取值

在Struts2中,一个请求在最终到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是CompoundRoot中的一个元素.看下面的代码: public class UserAction { private String username; private Integer age; private boolean valid; //查看用户的详细信息 public String de

struts2 之 ognl

ognl:object graph navigation language:对象导航图语言. ognl表达式在struts2中有2个作用:表达式语言,类型转换. 实例如下: public class OgnlDemo { public static void main(String[] args) throws OgnlException { //ognl表达式的思想:把数据分为两类:常用的和不常用的. //常用的数据一般都是小数据,不常用的数据一般都是大数据. //将不常用的数据放在map中