笔记_struts_ognl_标签

笔记_struts_ognl_标签

ID:17487681

大小:67.50 KB

页数:21页

时间:2018-09-02

笔记_struts_ognl_标签_第1页
笔记_struts_ognl_标签_第2页
笔记_struts_ognl_标签_第3页
笔记_struts_ognl_标签_第4页
笔记_struts_ognl_标签_第5页
资源描述:

《笔记_struts_ognl_标签》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、笔记_struts_OGNL_标签OGNL教程OGNL简单特性模拟OGNL简单的实现OGNL入门OGNL原理一角OGNL学习http://keyboardsun.javaeye.com/blog/434677OGNL使用手记(在java中使用)http://wtnhwbb.javaeye.com/blog/107683----------------------------------------------------------------------------一.OGNL是ObjectGraphicNavigationLanguage(对象图导航语言)的缩写,它是一个开

2、源项目.Struts2框架使用OGNL作为默认的表达式语言.1.与EL表达式相比,它提供了平时我们需要的一些功能,如:(1).支持对象方法调用,如:xxx.sayHello();(2).支持类静态方法的调用和静态属性访问,表达式的格式为:@[类全名(包括包路径)]@[方法名

3、属性名],例如:@java.lang.String@format('foo%s','bar')或@cn.itcast.Constant@APP_NAME;(3).操作集合对象.*2.页面中直接使用jstl/EL,而不使用ognl表达式(1).后台中:ActionContext.put(...);--把要在j

4、sp中显示的数据放到值栈中(2).jsp页面中:${...}--Struts2中默认就是从值栈中取值的二.OGNL上下文1.OGNL有一个上下文(Context)概念,说白了,上下文就是一个Map结构,它实现了java.utils.Map接口,在Struts2中上下文(Context)的实现为ActionContext,下面就是上下文(ActionContext)的结构示意图:

5、-----ValueStack(值栈,它是根对象)

6、

7、-----parameters

8、

9、-----request

10、OGNLContext(ActionContext)---

11、-----session

12、

13、

14、-----application

15、

16、-----attr

17、

18、-----...(可以把对象加到ActionContext中,如页面中的struts的set标签)注:当struts2接受一个请求时,会迅速创建ActionContext,ValueStack,action.然后把action存放进ValueStack,所以action的实例变量可以被OGNL访问.2.(1).访问上下文(Context)中的对象需要使用#符号标注命名空间,如:#session,#application(2).另外OGNL会设定一个根对象(root对象),在Sturts2中根对象就是ValueStack(

19、值栈).如果要访问根对象(即ValueStack)中对象的属性,则可以省略#命名空间,直接访问该对象的属性即可.(3).在Struts2中,根对象ValueStack的实现类为OgnlValueStack,该对象不是我们想像的只存放单个值,而是存放一组对象.在OgnlValueStack类里有一个List类型的root变量,就是使用它存放一组对象的.

20、-----ValueStack:root变量:List[action,OgnlUtil...]

21、

22、-----parameters

23、

24、-----request

25、OGNLContext(ActionContext)---

26、-----s

27、ession

28、

29、-----application

30、

31、-----attr注:在root变量中处于第一位的对象叫栈顶对象.通常我们在OGNL表达式里直接写属性的名称即可访问root变量里对象的属性,搜索顺序是从栈顶对象开始寻找.如果栈顶对象不存在该属性,就会从第二个对象寻找,如果没有找到就从第三个对象寻找,依次往下访问,直到找到为止(找不到返回null)注:Struts2中,OGNL表达式需要配合Struts标签才可以使用,如:注:在ValueStack中找的是对象(如action)的属性,在#request中找的是对象.3.访问:

32、(1).由于ValueStack(值栈)是Struts2中OGNL的根对象,如果用户需要访问值栈中的对象,在JSP页面可以直接用下面的EL表达式访问ValueStack(值栈)中的对象的属性:${foo}//获取值栈中的某个对象的foo属性.注:为何使用EL表达式能够访问ValueStack中对象的属性?(jsp中EL表达式只能从pageScope,requestScope,sessionScope,applicationScope中取值)原因是Struts2对HttpServletRequ

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。