三大框架 之 OGNL表达式

OGNL

什么是OGNL

  • OGNL是Object-Graph Navigation Language的缩写,
  • 它是一种功能强大的表达式语言,通过它简单一致的表达式语法,
  • 可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。

OGNL与EL表达式对比

​ OGNL对象图导航语言,比EL表达式强大很多倍的语言
​ EL表达式只能从域中获取数据
​ OGNL可以调用对象的方法,获取struts的值栈的数据。
​ OGNL是第三方的表达式语言,用它来获取struts中值栈的数据

OGNL功能

  • 支持运算符(如+-*/)
  • 支持对象方法调用,如xxx.doSomeSpecial();
  • 支持类静态的方法调用和值访问
  • 支持赋值操作和表达式串联
  • 访问OGNL上下文
  • 操作集合对象
  • 可以直接new一个对象

OGNL使用要素

  • 表达式
  • 根对象
  • Context对象(非根对象)

OGNL入门

OGNL核心OgnlContext,本质就是一个map

java程序使用ognl

获取root中的数据
  • 可以向root当中存放Java对象

  • 不需要加#号

1296811-20190419205553596-1300737480.png

获取context中的数据

取数据时需要加#
1296811-20190419205619087-805159085.png

获取对象方法

1296811-20190419205623481-818728167.png

获取对象静态方法

1296811-20190419205629119-1287412526.png

struts2中使用ONGL

  • 在jsp当中引入struts的标签库
  • 直接在jsp当中使用OGNL

1296811-20190419205637912-2063245839.png

  • 访问静态方法

    ​ 默认是不让访问静态成员
    ​ 需要开启一个常量(struts.ognl.allowStaticEmthodAccess)

1296811-20190419205649532-196519437.png

1296811-20190419205654209-1174424525.png

转载于:https://www.cnblogs.com/mumuyinxin/p/10738740.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值