OGNL

http://oyl822.iteye.com/blog/254684

http://www.iteye.com/wiki/struts2/1353-ognl-catalyst-for-data-operation-in-struts2
### OGNL 使用方法 在使用 Arthas 定位问题时,若想查看一个静态变量的值,可使用类似 `ognl -x 3 '@com.fdw.study.MasterDataRelation@TYPE_DEPOSITARY'` 的命令,其中 `-x 3` 用于指定输出对象的深度,`@com.fdw.study.MasterDataRelation@TYPE_DEPOSITARY` 表示访问 `com.fdw.study.MasterDataRelation` 类的静态变量 `TYPE_DEPOSITARY` [^1]。 ### OGNL 原理 OGNL(Object Graph Navigation Language)即对象图导航语言,是一种功能强大的表达式语言。它允许在对象图中导航,通过简单的表达式来访问和操作对象的属性、方法等。OGNL 会解析输入的表达式,根据表达式的规则在对象图中查找对应的对象和属性,并执行相应的操作。 ### OGNL 应用场景 - **调试与监控**:如在 Arthas 中,使用 OGNL 表达式可以实时查看应用程序中对象的状态和静态变量的值,帮助开发人员快速定位问题 [^1]。 - **数据绑定**:在一些 Web 框架中,OGNL 可用于将视图层的数据与业务逻辑层的对象进行绑定,实现数据的传递和交互。 - **规则引擎**:OGNL 表达式可以作为规则的描述方式,根据对象的属性和状态来判断是否满足特定的规则。 ```java // 示例代码:使用 OGNL 访问对象属性 import ognl.Ognl; import ognl.OgnlContext; import ognl.OgnlException; class Person { private String name; public Person(String name) { this.name = name; } public String getName() { return name; } } public class OgnlExample { public static void main(String[] args) { Person person = new Person("John"); OgnlContext context = new OgnlContext(); context.put("person", person); try { Object expression = Ognl.parseExpression("person.name"); Object result = Ognl.getValue(expression, context, context.getRoot()); System.out.println(result); } catch (OgnlException e) { e.printStackTrace(); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值