- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入详解Struts2中的OGNL
7.2? OGNL
7.2.1? OGNL概述
OGNL是对象图导航语言Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。
在前面的例子中,登录页面输入框的name用到的名字就是OGNL的表达式,比如:“账号:input type=text name=account”,在欢迎页面使用“s:property value=account/”。两个account表达式都是相同的,但前一个保存对象属性的值,后一个是取得对象属性的值。
表达式语言简单、易懂却又功能强大,关于OGNL更多的介绍可以去看看,那里有很详细的文档。
7.2.2? OGNL的基本使用
1:常量与操作符
在OGNL中,可以使用Java的常量操作和数学运算。需要注意的是,String常量可以使用单引号或者双引号括起来,但是单个字符也是使用单引号,所以只有在超过一个字符的时候,使用单引号界定的常量才是String类型的。如果需要只定义一个包含单个字符的String常量,就需要使用转义。
?????? 比如:s:property value=account/这句话里面的account就是个字符串,因为它是用单引号括起来的。或者s:property value=7+8/这句话,输出就是15,也就是数学运算后的值。
2:方法调用
OGNL支持方法的调用,这个在后面有演示,比如访问静态方法,比如访问集合对象的方法等,这里就不去赘述了。
3:设置数值及表达式列表
OGNL让你可以在单条语句中执行逗号分隔的多个表达式,最后一个表达式的返回值作为整条语句的输出。
4:使用OGNL访问ValueStack
在OGNL中,没有前缀代表了访问当前值栈。
?????? 比如前面的示例中,在欢迎页面中使用的“s:property value=account/”,这句话中s:property标签的value属性的值就是使用的ognl,它没有任何前缀,就表示直接访问值栈。
访问到值栈过后,会按照从栈顶到栈底的顺序,寻找第一个匹配的对象,那就会找到Action中的account属性,然后就取到值了。
5:使用OGNL访问ActionContext
在ognl中,可以通过符号“#”来访问ActionContext中除了值栈之外的各种值,典型如:
#parameters:当前请求中的参数,对应request.getParameter(name)
#request:请求作用域中的属性,对应request.getAttribute(name)
#session:会话作用域中的属性,对应session.getAttribute(name)
#application:应用程序作用域的属性
#attr:按照页面page、请求request、会话session和应用application的顺序,返回第一个符合条件的属性。
在引用的时候,需要加上前缀“#”,并指定范围,然后写出要引用哪个属性,形如:“#paramters.account”。
在上一节的示例上稍加修改,来试验一下这些知识。
(1)修改action,去掉PreResultListener的注册,然后设置Session和Application的属性值,示例如下:
?
java代码:
查看复制到剪贴板打印
public?class?HelloWorldAction?extends?ActionSupport?{??
????private?String?account;??
????private?String?password;??
????private?String?submitFlag;??
????public?String?execute()?throws?Exception?{??
????????this.businessExecute();??
????????ActionContext?c?=?ActionContext.getContext();??
????????c.getSession().put(account,?session中的account);??
????????c.getApplication().put(account,?application中的account);??
??????????
????????return?toWelcome;??
????}??
????/**?
?????*?示例方法,表示可以执行业务逻辑处理的方法
您可能关注的文档
- 消费社会中媒介与公共生活的互动.docx
- 消费致富-消费者也能成为资本家.doc
- 消防审查与水消防设计若干问题【新修改版】,总后薛英超.doc
- 消防系统设备设施操作及保养XZ改.doc
- 涉外技术许可合同(2009定稿)20110617160617247.doc
- 涉税通8226;企业版使用简明指南.doc
- 液体表面张力系数.doc
- 淄博市建筑工程质量监督档案(样表)20130220.doc
- 淘宝直通车提高质量得分速成方法.docx
- 淘宝装修之LOGO.doc
- 英语人教PEP版八年级(上册)Unit4+writing+写作.pptx
- 人美版美术四年级(上册)8 笔的世界 课件 (1).pptx
- 人美版美术七年级(上册)龙的制作.pptx
- 英语人教PEP版六年级(上册)Unit 2 第一课时.pptx
- 数学苏教版三年级(上册)3.3 长方形和正方形周长的计算 苏教版(共12张PPT).pptx
- 音乐人教版八年级(上册)青春舞曲 课件2.pptx
- 音乐人教版四年级(上册) 第一单元 音乐知识 附点四分音符|人教版.pptx
- 英语人教PEP版四年级(上册)Unit 6 Part B let's learn 1.pptx
- 道德与法治人教版二年级(上册)课件-3.11大家排好队部编版(共18张PPT).pptx
- 人美版美术七年级(上册)《黄山天下奇》课件1.pptx
文档评论(0)