OGNL详解

OGNL即Object Graph Navigation Language四个单词的缩写,意为对象图导航语言,下面看一下它的用法

1.访问根对象的name属性,格式如下:

Object object = Ognl.parseExpression("name");//解析属性name,返回与之关联的对象
Object object2 = Ognl.getValue(object, context, context.getRoot());//通过name属性寻找对象对应的getName方法,就可以获取到name属性的值

2.访问非根对象的name属性

Object object = Ognl.parseExpression("#dog.name");//解析dog对象的name属性,返回与之关联的对象
Object object2 = Ognl.getValue(object, context, context.getRoot());//通过name属性寻找对象对应的getName方法,就可以获取到name属性的值
3.加#与不加#的区别

当解析的属性名前不加#时,表示解析的是OGNL上下文对象中的根对象,反之,则解析的是非根对象。

4.Ognl调用方法

Object object7 = Ognl.parseExpression("name.toUpperCase()");//调用了字符串的小写转换为大写的方法toUpperCase()
Object object8 = Ognl.getValue(object7, context, context.getRoot());

5.Ognl调用静态方法

Object object9 = Ognl.getValue("@java.lang.Integer@toBinaryString(20)", context,context.getRoot());

第一个@后为类的全称,第二个@后为要调用的静态方法,该代码的作用是将整数20转换为二进制代码的形式。

6.Ognl调用静态成员变量,若是调用Math类里面的静态变量或静态方法,则无需指定类名

Object object10 = Ognl.getValue("@@PI", context, context.getRoot());

返回PI的值,即3.1415926927...

7.Ognl生成对象,以及集合生成方式,下标索引访问集合中的元素

Object object11 = Ognl.getValue("new java.util.LinkedList()", context, context.getRoot());

创建了一个LinkedList类型的对象

Object object12 = Ognl.getValue("{'11','22','33','44'}[2]", context, context.getRoot());

返回集合当中的第三个元素

8.Ognl解析Map对象

Ognl.getValue("#{'key1':'value1','key2':'value2','key3':'value3'}", context, context.getRoot())

创建了一个Map类型的对象{key1=value1, key2=value2, key3=value3}

Ognl.getValue("#{'key1':'value1','key2':'value2','key3':'value3'}['key2']", context,context.getRoot())

返回了Map当中键值为key2所对应的value值

9.OGNL的过滤与投影

1)过滤(filtering),语法格式如下:

collection.{? expression}

返回一个集合,类似于表的取行操作,collection为待操作的集合,expression为筛选的条件,?表示所有满足条件

的对象都将返回到集合中;

返回集合中第一个元素,语法格式collection.{^ expression};

返回集合中最后一个元素,语法格式collection.{$ expression}。

2)投影(projection),相当于数据库中表的取列操作,语法格式如下:

collection.{expression}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值