OGNL的概念,这里就不多介绍了。
我这里想做的就是通过一个ognl的简单的例子,我自己写一个程序,模拟ognl的信息获取。
信息存取的话,道理是一样的,这里读者自己可以参照我的代码实现数据存入。
我这里只讲OGNL的简单的链式获取,不涉及复杂的表达式部分,OGNL的NB之处在于表达式。
下面我们引入正题。看我下面的例子。
我们这里用OGNL获取Bean的信息,包括ArrayList,HashMap,以及数据对象。
下面贴代码了。
UserBean.java
UserAddrBean.java
测试main函数
运行输出结果是
addr1
list1
dev
list2
addr1
value
dev
菜鸟们可能觉得OGNL好神奇噢,我也这么觉得,是挺有想法的一个东东。搞的跟模板工具的获取方式很像。的确在数据对象的解耦合方面做了一个进步。
下面我们模拟开发一个这样的东东。功能与之类似。代码如下:
MyContext.java
下面才是核心部分,bean表达式转换器噢。
这里的代码如果小菜鸟没有用过发射啥的东东,那就要多多研究研究了,这里用的东西个人觉得还是蛮有正对性的。
ValueEngine.java
下面我们要模拟上面刚才运行的那个main函数了噢,呵呵。
不过这次的main函数,用的对象获取的方法是我刚写的方法。
运行main函数。试试效果,看看是不是跟OGNL的感觉一样
输出是:
addr1
list1
20000
value
list2
addr1
value
keyboardsun
你看看,是不是和ognl的效果一样啊,是不是很神奇呢。我这里只是模拟,核心的意思跟ognl差不多。
供大家玩玩参考使用,别以为ognl有多神奇,我们要善于去把握其中的原理。当然,我这里演示的只是OGNL最简单的一角,它的强大之处可不在这里,所以大家别简单的认为ognl不过如此。其实ognl很强大,尤其是表达式部分。
Ognl的源码我没有细看,大概的简单数据获取原理就是这样的,你看看,我上面就10来行的代码,就可以实现这么好的功能了噢,菜鸟们多学习学习吧。
作者 keyboardsun
转载请表明出处噢。