对象图形导航语言 (2).pptx
《对象图形导航语言 (2).pptx》由会员分享,可在线阅读,更多相关《对象图形导航语言 (2).pptx(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、http:/第四章第四章对象图形导航语言对象图形导航语言对象图形导航语言对象图形导航语言(OGNL)(OGNL)http:/中国十大品牌IT教育机构本章目标:OGNL表达式。什么是OGNL表达式。1.OGNL表达式,其实是一串特殊的字符串,通过这一串字符串可以快速的操作Java代码,甚至是不允许操作Java代码的地方,如JSP页面。ValueStack中的Context和root。1.Struts2是如何通过ValueStack来操作OGNL的。Struts2经常使用的几个标签1.包:如果只在Java代码中做测试,则只导入ognl.jar即可。http:/中国十大品牌IT教育机构数据传输背后机
2、制:ValueStack(值栈)要了解ValueStack,必须先理解OGNL(ObjectGraphicNavigationLanguage)。OGNL是Struts2中使用的一种表达式语言1.它可以用于JSP的标签中,以便能够方便的访问各种对象的属性;2.它用于界面将参数传递到Action(并进行类型转换)中;3.它还可以用于struts2的配置文件中!所以,非常有必要理解OGNL的基本机制。Root对象1.OGNL称为对象图导航语言。所谓对象图,即以任意一个对象为root根,通过OGNL表达式可以访问与这个对象关联的其它对象。http:/中国十大品牌IT教育机构OGNL的目的:OGNL目
3、的,是为了获取某个对象的值或设置某个对象的值或调用某个对象的方法!OGNL表达式语言的真正目的,是为了在那些不能写JAVA代码的地方执行JAVA代码,或者是为了更方便地执行JAVA代码。Ognl.getValue()方法的第一个参数,就是一条OGNL表达式,第二个参数是指定在表达式中需要用到的root对象!http:/中国十大品牌IT教育机构OGNLOGNL必须拥有一个根root和一个OGNL表达式。可选拥有一个Map类型的Context。OGNLOGNL表达式Context可选newObject()根必须OGNL表达式支持以下操作符:#、(单引号)等。http:/中国十大品牌IT教育机构#符
4、的作用:访问根对象的属性或是方法不需要使用#,但如果非使用#来访问根对象的信息则必须使用#root,即与root关键字共同使用。如果是调用非根对象的方法或属性必须要使用#符。http:/中国十大品牌IT教育机构Context对象在OGNL的表达式中,有可能需要访问到多个毫不相干的对象,这时候,我们需要给OGNL传递一个Map类型的对象,把表达式中需要用到的对象放到Map中即可!这个Map对象,称为context。要在表达式中访问到context中的对象,需要使用“#对象名称”的语法规则。所谓context其实就是一个Map类型的对象。主要是因为在OGNL中,不支持多个root对象,那么如果需要
5、在表达式中访问更多毫不相干的对象时,只能通过一个Map来把这些对象统一传递给OGNL。http:/中国十大品牌IT教育机构只有Context没有根对象的示例:第一个参数为OGNL表达式。第二个参数为Map类型的Context对象。第三个参数为根对象,此根对象为一个空的对象。但必须要传。http:/中国十大品牌IT教育机构同时给OGNL传递Context和root对象:注意是如何获取第三个对象中的值的:http:/中国十大品牌IT教育机构OGNL可以进行赋值操作:仅供了解:仅供了解:1.第一个参数为第一个参数为ONGL表达式。表达式。2.第二个参数为第二个参数为root对象。对象。3.第三个参数
6、为设置的值。第三个参数为设置的值。下图第一个参数为:OGNL表达式,第二个参数为根对象,第三个参数为值。下图第一个参数为:OGNL表达式,第二个参数为Context对象,第三个参数为root对象。第四个参数为值。http:/中国十大品牌IT教育机构利用OGNL表达式调用对象的方法:以下代码通过两种方式调用,第一种方式调用的是非根对象的方法,第二种调用的是根对象的方法。http:/中国十大品牌IT教育机构符的作用:在OGNL中,符用来调用静态属性或是方法。当然必须是公共的。使用符默认调用的是Math中的静态方法,所以在第一种方法对Math类省略了。第二种是书写完整的代码。http:/中国十大品牌
7、IT教育机构利用OGNL创建List和Map集合:以下创建List,第一个参数为OGNL表达式,第二个参数为root.l以下创建Map,第一个参数为OGNL表达式,第二个参数为root.,注意#符的使用。http:/中国十大品牌IT教育机构小结:通过上面的实现我们清楚的知道了两个问题:1.1:OGNL就是用来操作属性和方法的。2.2:OGNL操作的对像可以有两个一个是根root对象,它只能有一个。一个是Map的Context对象,它可以有多个。通过key,value来保存信息。那么Struts2的又是如何使用OGNL的呢?http:/中国十大品牌IT教育机构理解ValueStack的基本机制!
8、对各种现象作出解释ValueStack实际上就是对OGNL的封装,OGNL主要的功能就是赋值与取值,Struts2正是通过ValueStack来进行赋值与取值的!ValueStack是一个接口,而OgnlValueStack是strtus2中的缺省实现。ValueStack中的数据,分两个部分存放:root和context(这与OGNL中的概念一致)。http:/中国十大品牌IT教育机构在ValueStack中有两个方法:见OgnlValueStack的源代码1.getContext()返回非根对象,即一个Map.2.getRoot()返回root根对象。而它是一个List。所以,ValueS
9、tack可以有多个根对象。ValueStack中的root对象是CompoundRoot,CompoundRoot继承了ArraryList,提供了额外的方法:push()和pop()方法,用来对root对象中所包含的数据进行存取!我们称为压栈和弹栈。http:/中国十大品牌IT教育机构CompoundRoot的源代码:正如右图所示:CompoundRoot变成了一个栈栈结构!压栈操作,将导致对象被放到CompoundRoot的第0个元素上(第0个元素是栈顶),其它对象被依次往后移动;出栈操作,将导致CompoundRoot的第0个元素被移除(即栈顶元素被弹出),其它对象被依次往前移动!htt
10、p:/中国十大品牌IT教育机构Struts2的数据标签,是通过直接直接操作ValueStack对象获取数据的:在Struts2中,一个请求在最终到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是CompoundRoot中的一个元素。在Struts2中,操作ValueStack的就是struts2的自定义标签,即/struts-tags.http:/中国十大品牌IT教育机构为了能说明问题,先让我们认识它的两个基本数据标签:1.s:property从ValueStack中获取属性输出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象图形导航语言 2 对象 图形 导航 语言
限制150内