网站大量收购独家精品文档,联系QQ:2885784924

第4章-struts2中的OGNL.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章-struts2中的OGNL

第四章:Struts 2中的OGNL ;学习目标;OGNL简介;为什么要使用OGNL;OGNL基础;计算OGNL表达式的示例代码(二);计算OGNL表达式的示例代码(三);说明;再看一个简单示例;问题及解决方案(一);问题及解决方案(二);OGNL基本概念 ;OGNL上下文概念详解 ;OGNL上下文概念详解;struts2中的OGNL上下文 ;我们可以使用#request访问HttpServletRequest对象, #session访问HttpSession对象,但请注意根对象是什么?是ValueStack! 那么ValueStack是什么?值栈。也就是一组对象的堆栈。也就是说,在struts2中,根对象不是我们通常的一个对象,而是一组对象。我们可以push新的对象到值栈中,也可以弹出值栈的栈顶对象。假设我们将user对象push到值栈中,那么如下的表达式将与之前我们见过的表达式一样,具有相同的结果: Java代码 name // 取用户的姓名 age // 取用户年龄 birthday // 取用户生日 // 取用户所属客户的名称 #request.parameters // 取请求参数?? 也就是说,我们使用name这个表达式的时候,ONGL会取根对象的name属性,但现在根对象是ValueStack!那么访问ValueStack的name属性意味着什么呢?这意味着: ValueStack会先查看栈顶元素是否有name属性,如果有就返回该属性值,否则取出栈顶下的元素,继续查看,直到栈底为止。 以上就是OGNL表达式的核心概念,你理解了吗?下一步,你需要了进一步了解OGNL的语法,以发掘其更强大的功能! ;理解Struts2中的ValueStack ;OgnlValueStack与ActionContext的关系;分清ActionContext 、ValueStack 、Stack Context ;Struts2表达式OGNL支持的常量;struts2 中 OGNL表达式的使用 ;#、%和$: “#”的用途 ;#、%和$: “%”的用途 ;#、%和$: “$”的用途;OGNL的应用场景;OGNL;OGNL访问举例;集合的伪属性 ;OGNL中#的使用: #可以取出堆栈上下文中的存放的对象. ;OGNL引用Action的属性 ;OGNL与Collection(Lists,Maps,Sets) ;判断一个对象是否在List内存在: s:if test=foo in {foo,bar} ?? muhahaha /s:if s:else ?? boo /s:else s:if test=foo not in {foo,bar} ?? muhahaha /s:if s:else ?? boo /s:else 取得一个List的一部分: ? – 所有满足选择逻辑的对象 ^ - ??第一个满足选择逻辑的对象 $ - ??最后一个满足选择逻辑的对象 例如: person.relatives.{? #this.gender == male} 上述代码取得这个人(person)所有的男性(this.gender==male)的亲戚(relatives);Lambda 表达式;注意;Struts2在OGNL基础上的增强 ;OGNL[N]语法;OGNL[N]语法;OGNLtop关键字;值栈中的Action实例 Struts2框架总是把Action实例放在栈顶。因为Action在值栈中,而值栈又是OGNL中的根,所以引用Action的属性可以省略“#”标记,这也是为什么我们在结果页面中可以直接访问Action的属性的原因。 Struts2中的命名对象 Struts2还提供了一些命名对象,这些对象没有保存在值栈中,而是保存在ActionContext中,因此访问这些对象需要使用“#”标记。这些命名对象都是Map类型。 parameters 用于访问请求参数。如:#parameters[id]或#parameters.id,相当于调用了HttpServletRequest对象的getParameter()方法。 注意,parameters本质上是一个使用HttpServletRequest对象中的请求参数构造的Map对象,一量对象被创建(在调用Action实例之前就已经创建好了),它和HttpServletRequest对象就没有了任何关系。 request 用于访问请求属性。如:#request[user]或#request.user,相当于调用了HttpServletRequest对象的getAttribute()方法。 session 用于访问session属性。如:#session[‘user’]或#session

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档