ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:17.60KB ,
资源ID:21960657      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21960657.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OGNL简单的struts 2专用表达式Word格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

OGNL简单的struts 2专用表达式Word格式.docx

1、 public void setTeamname(String teamname) this.teamname = teamname; public Person getPerson() return person; public void setPerson(Person person) this.person = person; public int getPersonnum() return personnum; public void setPersonnum(int personnum) this.personnum = personnum;/ 定义人员类class Person /

2、 姓名 private String name; / 年龄 private int age; / 人员出生日期 private Date birthday; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = age; public Date getBirthday() return birthday; public void se

3、tBirthday(Date birthday) this.birthday = birthday;代码8.1所示内容定义了两个复合类型:团队(team)和人员(person)类型。使用OGNL表达式示例,如代码8.2所示。代码8.2 使用OGNL表达式示例import java.util.HashMap;import java.util.Map;import ognl.Ognl;import ognl.OgnlException;public class TestOGNL public static void main(String args) / 定义一个Map对象 Map m = new

4、 HashMap(); /定义一个Team对象 Team team1 = new Team(); team1.setTeamname(团队1); /定义一个Person对象 Person person1 = new Person(); person1.setName(pla1 /添加team元素 team1.setPerson(person1); Team team2 = new Team(); team2.setTeamname(团队2 Person person2 = new Person(); person2.setName(pla2 team2.setPerson(person2);

5、/添加Map元素 m.put(team1, team1);team2, team2); try System.out.println(Ognl.getValue(team1.teamname, m);team2.person.nameteamname, team2);person.name catch (OgnlException e) 代码8.2所示内容定义了一个Map类型的嵌套属性,如图8.1所示。图8.1 嵌套属性示意图运行该示例,控制器显示如下信息:团队1pla2团队2 说明 OGNL可以使用非常简单的表达式来访问多层嵌套属性,为开发者提供了一个有力的工具。8.2 Struts 2的O

6、GNLOGNL是Struts 2框架的默认表达式语言,增强了Struts 2的数据访问能力,同时简化了代码。8.2.1 Struts 2的OGNL表达式 标准的OGNL会设定一个根对象(root对象)。假设使用标准OGNL表达式来求值(不使用Struts 2的OGNL表达式),如果OGNL上下文(OgnlContext Map类型)有两个对象:foo对象,在OgnlContext中名称为foo;bar对象,在OgnlContext中名称为bar。同时foo对象被设置为根对象(root)。则利用下面的OGNL表达式求值:/ 返回foo.getBlah()#foo.blah/返回bar.getBl

7、ah()#bar.blah/返回foo.getBlah() ,因为foo为根对象blah使用OGNL是非常简单的,如果要访问的对象不是根对象,如示例中的bar对象,则需要使用命名空间,用“#”来标识,如“#bar”;如果访问一个根对象,则不用指定命名空间,可以直接访问根对象的属性。在Struts 2框架中,值栈(Value Stack)就是OGNL的根对象,假设值栈中存在两个对对象实例:Man和Animal,这两个对象实例都有一个name属性,Animal有一个species属性,Man有一个salary属性,假设Animal在值栈的顶部,Man在Animal后面,下面的代码片断会帮助读者更好

8、地理解OGNL表达式:/ 调用animal.getSpecies()species/ 调用man.getSalary()salary/ 调用animal.getName(),因为Animal位于值栈的顶部name最后一行示例代码,返回的是animal.getName()返回值,即返回了Animal的name属性,因为Animal是值栈的顶部元素,OGNL将从顶部元素搜索,所以会返回Animal的name属性值。如果要获得Man的name值,则需要如下代码:man.nameStruts 2允许在值栈中使用索引,示例代码如下所示:0.name / 调用animal.getName()1.name

9、/ 调用man.getName()使用索引,并不是直接获得指定的元素,而是从指定的索引位置搜索。Struts 2中的OGNL Context是ActionContext,如图8.2所示。图8.2 Struts 2的OGNL Context结构示意图图8.2只是说明Struts 2的OGNL Context结构,实际上Context还包含其他对象。由于值栈是Struts 2中OGNL的根对象,如果用户需要访问值栈中的对象,则可以直接通过下面的代码访问值栈中的属性:/获得值栈中的foo属性$foo如果访问其他Context中的对象,由于不是根对象,在访问时,需要加#前缀。? application

10、对象:用于访问ServletContext,例如#application.userName或者#applicationuserName,相当于调用Servlet的getAttribute(username)。 session对象:用来访问HttpSession,例如#session.userName或者#session,相当于调用session.getAttribute(userName request对象:用来访问HttpServletRequest属性(attribute)的Map,例如#request.userName或者#request,相当于调用request.getAttribut

11、e( parameters对象:用于访问HTTP的请求参数,例如#parameters.userName或者#parameters,相当于调用request.getParameter( attr对象:用于按page-request-session-application顺序访问其属性。8.2.2 OGNL的集合操作 如果需要一个集合元素的时候(例如List对象或者Map对象),可以使用OGNL中同集合相关的表达式。可以使用如下代码直接生成一个List对象:e1,e2,e3该OGNL表达式中,直接生成了一个List对象,该List对象中包含3个元素:e1、e2和e3。如果需要更多的元素,可以按照

12、这样的格式定义多个元素,多个元素之间使用逗号隔开。如下代码可以直接生成一个Map对象:#key1:value1,key2:value2,Map类型的集合对象,使用key-value格式定义,每个key-value元素使用冒号标识,多个元素之间使用逗号隔开。对于集合类型,OGNL表达式可以使用in和not in两个元素符号。其中,in表达式用来判断某个元素是否在指定的集合对象中;not in判断某个元素是否不在指定的集合对象中,如代码8.3所示。代码8.3 使用OGNL集合操作符 muhahaha/s:ifelse boo not in 除了in和not in之外,OGNL还允许使用某个规则获得

13、集合对象的子集,常用的有以下3个相关操作符。 ?:获得所有符合逻辑的元素。 :获得符合逻辑的第一个元素。 $:获得符合逻辑的最后一个元素。例如代码:person.relatives.? #this.gender = male该代码可以获得person的所有性别为male的relatievs集合。8.2.3 Lambda表达式 OGNL支持基本的Lambda表达式语法,通过Lambda表达式语法,可以在OGNL中使用一些简单的函数。例如:Fibonacci:if n=0 return 0;elseif n=1 return 1;else return fib(n-2)+fib(n-1);fib(0) = 0fib(1) = 1fib(11) = 89开发者可以使用Lambda表达式语法:property value=#fib =:#this=0 ? 0 : #this=1 ? 1 : #fib(#this-2)+#fib(#this-1), #fib(11) /

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1