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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

Struts2的OGNL标签详解.docx

1、Struts2的OGNL标签详解Struts2的OGNL标签详解一、Struts2可以将所有标签分成3类:UI标签:主要用于生成HTML元素的标签。非UI标签:主要用于数据库访问,逻辑控制等标签。Ajax标签:用于Ajax支持的标签。对于UI标签,则有可以分为两类:表当标签:表单标签主要用与生成HTML页面的from元素,以及普通表单元素的标签。非表单标签:非表单标签主要用于生成页面的树、Tab页等。流程控制标签:主要包含用于实现分页、循环等流程的标签。数据访问标签:主要包含用于输出ValueStack中的值,完成国际化等功能的标签。Struts2标签库分类图:二、使用Struts2标签库的准

2、备:1、 在Web.Xml文件中增加标签库d定义。(如果应用使用的是Servlet2.3以前)2、 现在jsp中使用taglib编辑指令导入标签库,然后才可以使用标签。三、Struts2的OGNL标签:OGNL是Object Graphic Navigation Language的缩写,它是一个开源项目。Struts2框架使用OGNL作为默认的表达式语言。在传统的OGNL表达式求值中,系统会假设系统只要一个根对象,但Struts2的Stack Context需要多个“根”对象,其中ValueStacke只是多个“根”对象的其中之一。假设:使用标签OGNL表达式求值,不是用Struts2的OGN

3、L表达式是求之。如果系统的Context中包含两个对象:foo对象,它在Context中的名字为foo;bar对象, 并且它在Context中的名为bar。将foo对象设置成Context的根对象。返回foo.getBlah()方法的返回值#foo.blah返回bar.getBlah()方法的返回值#bar.blah可以看出ONGL表达式的语法非正常简洁。Struts2不知根据表达式从ValueStack中取的对象,还可以直接从对象中获取属性。Struts2提供了一个特殊的OGNL ProperAccessories(属性访问器),它可以自动搜寻栈内的所有实体(从上到下),直接找到求值表达式匹

4、配的属性。Struts2使用标准的Context来进行OGNL表达式求值,OGNl处理的顶级对象是一个Context,这个Context对象就是一个Map类型实例,在该OGNL的Context中,有一个对象,这个根对象就是OGNL ValueStack,如果需要访问ValueStack里的属性,例如:#取出Valuestack中的bar属性:$bar;除此之外:Struts2还提供了一些命名对象,这些命名对象与根对象无关,它们只是存在于Stack Context中。所以,访问这些对象实现需要使用#前缀来指明。1、paramenters对象:用于访问HTTP请求参数,2、request对象:用于

5、访问HttpServletRequset的属性(Attribute)的Map。例如#request.userName3、Session对象:用于访问HttpSession的属性。例如#session.userName4、Application对象:用于访问ServletContext的属性。例如#application.userName5、Attr对象:如果可以访问到,则访问PageContext,否则将依次搜索HttpServletRequset,HttpSession,ServletContext中的属性。值得注意的是:当系统创建Action实例后,该Action实例已经被保存到Value

6、Stack中,故无需书写#即可访问Action属性。OGNL中的集合(List/Map):直接生成一个List类型的集合,该List对象中包含三个元素,都个元素之间以英文逗号隔开;例:直接生成一个Map类型的集合,该Map对象中每个Key-value对象之间以英文冒号隔开:多项之间以英文逗号隔开。例:Set标签用于蒋某个值放入指定范围:Scope:指定变量被放置的范围,该属性可以接受aplication、session、requset、page、action。如果该属性,则默认在OGNL Context中。Value:赋给变量的值,如果没有设置该属性,则将ValueStack栈顶的值付给变量。

7、对于集合,OGNL提供了两个与元素:in和not in,其中in判断某个元素是否在指定集合中;not in则用于判断某个元素是否不在指定集合中。 in表达式: 在 不在 not in表达式: 不在 在 OGNL还允许通过某个规则取得集合的自己,取得集合子集有三个操作符:1、?:取出所有符合选择逻辑的元素2、:取出符合集合逻辑的第一个元素3、$:取出符合选择逻辑的最后一个元素例: 35 - $在上面代码中,直接在集合后紧跟.运算符表明用于取出该集合的子集,内的表达式用于获取符合集合的元素,this指的是为了从大集books刷选数据到小集合,需要对大集合books进行迭代,this代表当前迭代的元

8、素。表达式用于获取集合中价格大于35的书的集合。(一)、控制标签:Struts2的非UI标签包括控制标签和数据标签,主要用于完成流程控制,以及对ValueStack的控制,数据标签主要用于访问ValueStack中的数据;控制标签可以完成输出流程控制,例如分支,循环等操作,也可以对集合的合并,排列。控制标签有:1、if:用于控制选择器输出的标签;2、else if: 与if标签结合使用,用于控制选择输出的标签;3、else:与if标签结合使用,用于控制选择输出的标签;4、append:将多个集合拼接成一个新的集合;5、generator:字符解析器,用于将一个字符串解析成一个集合;6、Iter

9、ator:这是一个迭代器,用于将集合迭代输出;7、merge:用于多个集合拼接陈一个新的集合。但与appernd的拼接方式有所不同。8、sort:用于对集合进行排序;9、Subset:截取集合的部分元素,形成新的子集;If/elseif/else这三个标签都是用于进行分支控制的,他们都是用于根据一个Boolean表达式的值,来确定是否计算、输出标签体的内容。例: 23 21 都不等 iterator标签:用于对集合进行迭代,这里集合包含List、Set和数组,也可对Map类型的对象进行迭代输出。Value、id、Status三个属性都是可选属性,如果没有指定value属性,则使用ValueSt

10、ack栈顶的集合。例:如果为标签指定status属性,即每次迭代时都会有一个IteratorStatus实例,该实例的方法包含如下几个:Int getCount():返回当前迭代了几个元素;Int getIndex():返回当前元素的索引;Boolean isEven(): 当前元素的索引是否是偶数;Boolean isFirst():当前元素是否是第一个元素;Boolean isLast():当前元素是否是最后一个元素;Boolean isOdd():当前元素的索引是否是奇数;append标签:用于将多个集合拼接起来,组成一个新的集合,通过阵中的拼接,从而允许通过一个标签就完成对多个集合的迭

11、代。merge标签的用法看起来很像append标签,也是用于将多个集合拼接成一个集合但是采用的拼接方式与append不同,append是以集合位顺序的拼接,merge是以元素位顺序拼接;generator标签:指定字符串按指定分隔符分隔成多个子串,临时生成多个子串可以使用iterator标签来迭代输出。可以理解我generator将一个字符串转化成一个集合,在该标签的标签体内,整个临时生成的集合将位于Valuestack的顶端,但一旦该标签结束,该集合将被移除Valuestack。属性有count:指定生成集合中元素的总数,separator:指定用于解析字符串的分隔符;val:指定被解析的字

12、符串;converter:制定一个转化器,该转化器负责将集合中的每个字符串转化成对象;id:可选属性,制定了该属性,则将生成的集合放在pageContext属性中;Subset标签:用于取得集合的子集,该标签的底层通过org.apache.Struts2.util.Subset.IteratorFilter类提供实现。属性有:count:指定生成集合中元素的总数,如果不指定该属性,默认取得源集合的全部元素。还有source,start,decider属性;subset标签生成的子集放在ValueStack的栈顶,如果该标签结束后,该标签生成的子集将被移除出ValueStack栈。Sort标签指

13、定集合元素进行排序,进行排序是=时,必须提供自己的排序规则,即使实现自己的Comparator,自己的Comparator需要实现java.util.Comparator接口。属性有:Comparator:该属性指定进行排序的Comparator实例。source:该属性指定排序的集合。如果不指定该属性,则对ValueStack栈顶的集合进行排序。(二)、数据标签:数据标签主要用于提供各种数据范文相关的功能,包含显示一个Action里的属性,以及生成国际化输出等功能,数据标签主要包含:action,bean,date,debug,i18n,include,param,push,set,text

14、,url,property;1、 action:用于直接在JSP页面直接调用一个Action,通过指定executeResult参数,还可以将该Action的处理结果包含到本页面中来。如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果包含到本页面中来。属性有:i. id:该属性会作为该Action的应用IDii. name:指定该标签调用哪个Actioniii. nameSpace:指定该标签调用的Action所在的namespaceiv. executeResult:该是属性指定是否要将action 的处理结果页面包含到本页面。默认值为false,

15、即不包含。v. ignoreContextParams:指定该页面中的参数是否需要转入调用Action,该参数的默认值是false,即将本页面的请求参数传入被调用的Action。2、bean:用于创建一个JavaBEan实例,如果指定id属性,则可以将创建的JavaBean实例放入Stack Context中。属性有name:指定要实例化的JavaBean的实现类;id:该属性是个可选属性,指定该属性后该实例JavaBean实例会被放入到Stack Context中(并不是ValueStack) ,从而允许直接通过该id属性来访问该JavaBean实例;3、date:用于格式化输出一个日期。属

16、性有:format:根据该属性指定的格式来个事化日期;nice:该属性只能为true或false,它用于指定是否输出指定日期和当前时刻之间的时差;name指定要格式化的日期值;id:制定引用该元素的id值。4、debug:主要用于辅助调试,在页面上生成一个调试链接,通过该链接到ValueStack和Stack Context中的所有的值信息;例:5、i18n:用于制定国际化资源的文件的baseName6、include:用于JSP页面中包含其他的JSP或Servlet资源,属性有value:指定需要被包含的JSP页面或者Servlet;id指定该标签的ID引用例:7、param:通常用作bea

17、n标签,url标签的子标签,属性有name:指定需要设置参数的参数名;value:指定需要设置参数的参数值;id:指定引用该元素的ID例:blue或8、push:用于将某个值放到ValueStack的栈顶。属性有:value:该属性指定需要放到ValueStack栈顶的值;id:指定引用该元素的ID例:9、set:用于设置一个新变量,并可以将新变量放入到指定的范围内,属性有name:重新生成的新变量的名字;scope:可选属性,指定新变量被放置的范围,属性值有application、session、requset、page、action,没有指定属性,则默认为放置到Stack Context中

18、;value:指定将赋值给变量的值,如果没有制定该属性,则将ValueStack栈顶的支付给行变量;id:指定该元素的引用ID;例:10、text:用于输出国际化消息11、url:用于生一个URL地址,属性有:includeParams该属性指定包含的参数,属性值只能为none,get,all;scheme用于设置scheme属性;value指定生成URL的地址值,如果value不提供就有action属性指定的Action作为URL地址;action指定生成URL的地址为那个Action,如果不提供,就用valuezuoweiURL的地址值;namespace;method;encode指定是

19、否需要encode指定是否需要encode请求属性;includeContext指定是否需要将上下文包含在URL地址中;anchor指定URL的锚点;id;12、property:用于生成输出某个值,包括输出ValueStack,Stack,Context和Action Context中得值。属性有default如果需要输出的属性值为null,则显示的default属性指定的值;espcape指定是否escape HTML代码;value 到指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值;id指定该元素的标识;(三)、表单标签Struts2的表单标签,可分为两

20、种:form表单本身和单个表单元素的标签。Form标签本身的行为不同于表单元素的标签。Struts2的表单元素标签都包含了非常多的属性,但有很多属性完全是通用的。1)、 表单标签的通用属性所有表单标签处理类都继承了UIBean类,UIBean包含了一些通用属性,分为3种:1、 模板相关属性2、 JavaScript相关属性3、 通用属性除此之外,所有表单元素标签都存在一个特殊属性:form,通过该属性可以实现表单元素和表单之间的交互。例如,我们可以通过$parameters.form.id来取得表单元素所在表单的ID。下面是表单标签的通用属性。模板相关的通用属性如下:1、 templateDi

21、r:指定该表单所用的模板文件目录。2、 theme:指定该表单所用的主题3、 template:指定该表单所用的模板JavaScript相关的通用属性如下:1、 onclick:指定鼠标在该标签生成的表单元素上单击时触发的JavaScript函数。2、 ondbclick:指定鼠标在该标签生成的表单元素上双击时触发的JavaScript函数。3、 onmousedown:指定鼠标在该标签生成的表单元素上按下时触发的JavaScript函数。4、 onmouseup:指定鼠标在该标签生成的表单元素上松开时触发的JavaScript函数。5、 onmouseover:指定鼠标在该标签生成的表单元素

22、上悬停时触发的JavaScript函数。6、 onmouseout:指定鼠标移除该标签生成的表单元素时触发的函数。7、 onfocus:指定该标签生成的表单元素得到焦点时触发的函数。8、 onblur:指定该标签生成的表单元素失去焦点时触发的函数。9、 onkeypress:指定单击键盘上某个键时触发的函数。10、onkeyup:指定松开键盘上某个键时触发的函数。11、onkeydown:指定按下键盘上某个键时触发的函数。12、onselect:对下拉列表项等可以选择表单的元素,指定选中该元素时触发的JavaScript函数。13、 onchange:对于文本框等可以接受输入的表单元素,指定当

23、值改变时触发的javaScript函数。因为Html本身的限制,并不是每个Html元素都可以触发以上的所有函数。因此,上面的属性并不是对Struts2 的每个标签都有效。Struts2还允许为表单元素设置提示,单鼠标在这些元素上停悬时,系统将出现提示。Struts2将这种特性称为Tooltip。相关的通用属性如下:1、 tooltip:设置此组件的Tooltip。2、 tooltipIcon:设置Tooltip图标的URL路径。3、 tooltipAboveMousePointer:是否在光标位置上显示Toopltip。也可以通过设置tooltipOffseY属性,设置Tooltip与光标位置

24、的垂直位移。4、 tooltipBgColor:设置Tooltip的背景色。5、 tooltipBgImg:设置Tooltip的背景图片。6、 tooltipBorderWidth:设置Tooltip边框的宽度2)、 表单标签的name和value属性Name和value属性之间存在一个独特的关系:因为表单元素的name属性会映射到Action的属性当对应的Action已经被实例化,且对应属性有值时,表单元素会显示出该属性的值,该值就是表单元素的value值。3)、 checkboxlist标签checkboxlist标签可以一次创建多个复选框,要根据list属性指定的集合。还有两个常用的属性

25、。1、 listKey:该属性指定集合元素中的某个属性作为复选框的value值2、 listValue:该属性指定集合元素中的某个属性作为复选框的标签。4)、 doubleselect标签doubleselect标签会生成一个级联列表框(会生成两个下拉列表框),当选第一个列表框时,第二个的内容也会随之改变。常用属性如下:1、 list:指定用于输出第一个下拉列表框中选项的集合2、 listKey:该属性指定集合元素中的某个属性作为复选框的value值3、 listValue:该属性指定集合元素中的某个属性作为复选框的标签。4、 doubleList:指定用于输出的第一个下拉列表框中选项的集合5、 doubleList key:该属性指定集合元素中的某个属性作为复选框的value值6、 doubleList Value:该属性指定集合元素中的某个属性作为复选框的标签。7、 doubleName:指定第二个下拉列表框的name属性。一、 head标签二、 optiontransferseselect标签三、 select标签四、 radio标签五、 optgroup标签六、 token标签七、 updownselect标签非表单标签一、 actionerror和actionmessage标签二、 component标签三、 tree和treenode初步

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

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