没有合适的资源?快使用搜索试试~ 我知道了~
学习OGNL在Struts2中工作原理
5星 · 超过95%的资源 需积分: 9 17 下载量 94 浏览量
2010-08-27
17:12:19
上传
评论
收藏 5KB TXT 举报
温馨提示
试读
4页
学习OGNL在Struts2中工作原理学习OGNL在Struts2中工作原理学习OGNL在Struts2中工作原理学习OGNL在Struts2中工作原理
资源推荐
资源详情
资源评论
无聊的一周又过去了,周末总可以做一些自己想做的事情了,比如睡觉,上网之类的了,之余也不忘学习学习。
工作中经常用到OGNL但是总感觉对它模模糊糊的,通过阅读官方的一些文档才发现原来是这样的,记录下来吧。
官方地址http://struts.apache.org/2.0.11.2/docs/ognl-basics.html, http://struts.apache.org/2.0.11.2/docs/ognl.html
Struts2内置了OGNL这是大家都知道的了,其实这种说话不严格,应该OGNL本身是一种很强大的表达式语言,XWork整合了OGNL的一部分并且将这部分内容做了相应的扩展,而Struts2又建立在XWork这个项目的基础之上,所以Struts2也就内置了OGNL这部分强大的功能。
为了详细些一步一步做记录吧。
先说OGNL,OGNL内部自己会维护一个OGNL上下文(OgnlContext)是一个实现了Map接口的对象,OGNL会将对象放在这个上下文中统一管理的,并且会有一个对象被指定为根对象(root)。假设有User和Customer这么两个类,分别有user和customer两个实例,这两个对象都有一个name属性,并且将user对象配置为唯一的根对象,那么就会有下面的情况:
#user.name 返回user.getName();
#customer.name 返回customer.getName();
#name 返回user.getName(); 因为user对象为根对象
OGNL访问对象的基本机制就是这样的。
在XWork中,ValueStack对象是上下文中的根对象,XWork中不仅可以根据表达式从ValueStack对象中获取对象,还可以获取对象的属性,XWork自己有一个强大的属性访问器,它可以自动搜索栈内的所有实体(从上到下),直到找到你所访问的对象和属性。假设ValueStack栈中有两个上面所说的user和customer两个对象,并且user是栈顶元素,customer在下面,就会有下面的情况:
name 返回user.getName(); 因为user在栈顶,搜索器找到一个匹配的属性就不会继续找下去
如果希望访问靠后对象的属性XWork提供了索引访问ValueStack的方法:
工作中经常用到OGNL但是总感觉对它模模糊糊的,通过阅读官方的一些文档才发现原来是这样的,记录下来吧。
官方地址http://struts.apache.org/2.0.11.2/docs/ognl-basics.html, http://struts.apache.org/2.0.11.2/docs/ognl.html
Struts2内置了OGNL这是大家都知道的了,其实这种说话不严格,应该OGNL本身是一种很强大的表达式语言,XWork整合了OGNL的一部分并且将这部分内容做了相应的扩展,而Struts2又建立在XWork这个项目的基础之上,所以Struts2也就内置了OGNL这部分强大的功能。
为了详细些一步一步做记录吧。
先说OGNL,OGNL内部自己会维护一个OGNL上下文(OgnlContext)是一个实现了Map接口的对象,OGNL会将对象放在这个上下文中统一管理的,并且会有一个对象被指定为根对象(root)。假设有User和Customer这么两个类,分别有user和customer两个实例,这两个对象都有一个name属性,并且将user对象配置为唯一的根对象,那么就会有下面的情况:
#user.name 返回user.getName();
#customer.name 返回customer.getName();
#name 返回user.getName(); 因为user对象为根对象
OGNL访问对象的基本机制就是这样的。
在XWork中,ValueStack对象是上下文中的根对象,XWork中不仅可以根据表达式从ValueStack对象中获取对象,还可以获取对象的属性,XWork自己有一个强大的属性访问器,它可以自动搜索栈内的所有实体(从上到下),直到找到你所访问的对象和属性。假设ValueStack栈中有两个上面所说的user和customer两个对象,并且user是栈顶元素,customer在下面,就会有下面的情况:
name 返回user.getName(); 因为user在栈顶,搜索器找到一个匹配的属性就不会继续找下去
如果希望访问靠后对象的属性XWork提供了索引访问ValueStack的方法:
资源评论
- saj34690632014-06-30还可以,可以作为参考
- 聪聪0012012-06-14里面对ognl写得很详细.初学者可以好好看看
royjohnson
- 粉丝: 11
- 资源: 51
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功