第06讲 ognl及其表达式.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第06讲 ognl及其表达式

第六讲 OGNL及其表达式 回顾 理解Struts2.0类型转换的必要性; 理解Struts2.0类型的转换机制; 着重掌握简单类型转换及其异常处理; 初步掌握集合类型转换及其异常处理的方法 目标 初步理解使用OGNL的优势, 简单的OGNL表达式 初步掌握索引访问 掌握对集合进行操作 OGNL的值栈特性; 着重掌握对集合进行操作,投影、选择和lambda表达式 一.OGNL简价 1.OGNL概念 1)对象图导航语言,获取和设置属性的Java对象。 示例:在JSP页面中使用表达式语言获取user对象的username %@ page language=java import=java.util.*,com.User % % User user = (User)request.getAttribute(user); String username = user.getUsername(); out.print(username); % 2)表达式 OGNL就是表达式!表达式总是有一个结果,也就是说表达式总是会求值出一个结果,这个结果可能是一个字符串(如名称、组织机构代码证号等),或者是一个布尔值(如是否是VIP客户等) 3)上下文(context) 上下文就是运行环境,表达式求值的环境!而上下文的实质是一组带名称的对象集合,即名称-对象的集合。 示例: Java代码 name? //获取姓名 环境? 5)根对象 OGNL会设定一个根对象(root对象),在Struts2中根对象就是ValueStack(值栈) 。如果要访问根对象(即ValueStack)中对象的属性,则可以省略#命名空间,直接访问该对象的属性即可; 根对象ValueStack的实现类为OgnlValueStack,该对象不只存放单个值,而是存一组对象。在OgnlValueStack类里有一个List类型的root变量,就是使用他存放一组对象; OgnlValueStack类包含两个重要的属性,一个root和一个context。其中root本质上是一个ArrayList,而context是一个Map(更确切的说是一个OgnlContext对象)。 Struts2将OgnlValueStack的root变量赋值给了context中的root变量,在OgnlValueStack的root对象中,保存着调用Action的实例。 在root变量中处于第一位的对象叫栈顶对象。通常我们在OGNL表达式里直接写上属性的名称即可访问root变量里对象的属性,搜索顺序是从栈顶对象开始寻找,如果栈顶对象不存在该属性,就会从第二个对象寻找,如果没有找到就从第三个对象寻找,依次往下访问,直到找到为止。 示例: s:property value=name/ 系统创建了Action实例后,该Action实例已经被保存到ValueStack中,故无须书写#即可访问Action属性。 示例:name OgnlValueStack与ActionContext的关系 在Struts2中,OgnlValueStack是ActionContext的基础,在ActionContext中,有一个Map类型的属性context,而这个context就是OgnlValueStack的context对象,ActionContext中的getSession()、getApplication()等方法,底层都是通过context.get()来实现的。 6)ActionContext 、ValueStack 、Stack Context 关系 ActionContext 一次Action调用都会创建一个ActionContext 调用:ActionContext context= ActionContext.getContext() ValueStack 由OGNL框架实现 ,可以把它简单的看作一个栈(List) 。 Stack Context Stack Context(map):stack上下文,它包含一系列对象,包括request/session/attr/application map等。 2.优势 1)支持对象方法调用,如xxx.doSomeSpecial(); 2)支持类静态的方法调用和值访问 格式:@[类全名(包括包路径)]@[方法名 | 值名] 示例:@java.lang.String@format(‘fo

文档评论(0)

awang118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档