Strus2标签库.doc_第1页
Strus2标签库.doc_第2页
Strus2标签库.doc_第3页
Strus2标签库.doc_第4页
Strus2标签库.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Strus2标签库Struts2提供了一套标签库用于简化JSP层的编程,开发者只需要标签中做少量的设置,就可以实现各种常用的效果。Struts2的标签与Action联系比较紧密,使用标签后,Struts会自动完成JSP层的显示数据、在Action层采集数据等工作。Struts2的标签都统一包含在struts-tags.tld文件中(位于struts2-core-2.2.1.jar中),使用统一前缀。Struts标签库大致分为: UI标签:包括表单标签,非表单标签 非UI标签:流程控制标签,数据访问标签首先要在JSP中使用taglib编译指令导入标签库,然后才可以使用标签。以上代码用于导入Struts2标签库,其中URI就是对应web.xml文件中指定的标签库的URI,而prefix属性值是该标签库的前缀。第1节OGNL语言OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。OGNL语法类似于EL,主要使用.作为操作符,例如要访问person.getCountry().getName()可以这样写:。1.1 OGNL的常用符号主要是#号,其作用有三种:1. 访问OGNL上下文与ActionContext资源,相当于ActionContext.getContext(),常用#属性如下表:属性作用示例#parameters代表包含当前HTTP请求参数提交的所有参数#parameters.id返回的是String类型,相当于JSP中的request.getParameterValues(“id”)。一般使用#parameters.id0#request代表request里的所有属性#request.account相当于JSP中的request.getAttribute(“account”)#session代表session里的所有属性#session.account相当于JSP中的session.getAttribute(“account”)#application代表ServletContext里的所有属性#application.account相当于JSP中的application.getAttribute(“account”)#attr代表request或session或application里的所有属性#attr.account相当于EL表达式中的$account,依次查request、session、application的属性,找到为止。parameters: 相当于:request.getParameter(userName);相当于:request.getAttribute(userName);相当于:session.getAttribute(userName);相当于:application.getAttribute(userName);2.用于过滤或筛选集合例如:books.?#this.price20,表示所有的price20的书。“?”:取出所有符合选择逻辑的元素。以上代码中,直接在集合后紧跟.运算符表明用于取该集合的子集,在内使用?表明取出所有符合选择逻辑的元素,而#this代表集合里的元素。s:iterator value=books.?#this.price - $以上代码的含义是:当books对象中的某个元素中的属性price大于35时,就输出。其中title和price分别是books对象中的变量(实例域)。Book是一个POJO,其中包括如下变量和其get/set方法。private String isbn;private String title;private double price;books是一个泛型列表集合,其本例中的泛型类型是Book,其创建如下:private List books= new LinkedList();其数据的装入如下:books.add(new Book(978-0735619678, Code Complete, Second Edition, 32.99);3.构造Map以上代码构造一个Map对象。对象名为foobar,其中的值为键值对,foo1=bar1,foo2=bar2;当要构造一个List对象的时候,则不需要“#”。以上代码可以访问一个Map对象中的键。综合实例:StrutsTagDemo01在地址栏输入:http:/localhost:8080/StrutsTagDemo01/ognl.action?id=1&id=2&id=31.2 控制标签以下标签示例均在StrutsTagDemo02项目中。1. iterator标签遍历集合iterator标签用于遍历集合(包括List、Set、Map)、数组等。可以使用OGNL表达式对数据进行过滤。可以指定如下3个属性: value:这是一个可选的属性,value属性指定的就是被迭代的集合,被迭代的集合通常都使用OGNL表达式指定。 id:这是一个可选的属性,该属性里指定了集合里元素的ID。 status:这是一个可选的属性,该属性指定迭代时的IteratorStatus实例,通过该实例即可判断当前迭代元素的属性。例如是否是最后一个,以及当前迭代元素的索引等。如果为该标签指定了status属性,即每次迭代时都会有一个IteratorStatus实例,该实例包括如下几个方法:int getCount()返回当前迭代了几个元素int getIndex()返回当前迭代元素的索引boolean isEven()返回当前被迭代的元素的索引是否是偶数boolean isOdd().奇数boolean isFirst()返回当前被迭代的元素是否是第一个元素boolean isLast().最后一个元素18 - ¥. 2. if、elseif、else标签控制流程Struts2的判断标签有3个: 其右if标签与else标签都有test属性示例:IfAction.java ifTag.jsp3. append标签连接多个Listappend标签用于将多个集合对象拼接起来,组成一个新的集合。从而允许通过一个标签完成多个集合的迭代。示例:AppendAction.java appendTag.jsp地址栏输入:http:/localhost:8080/StrutsTagDemo02/Append.action4. merge标签取集合的并集merge标签类似于append标签,能将两个List连接成一个List。它们的用法完全一致。不同的是,append标签是先添加集合1所有元素,再添加集合2所有元素;而merge是先添加集合1第1个元素,再添加集合2第1个元素,再添加集合1第2个元素,再添加集合2第2个元素。示例:AppendAction.java 、mergeTag.jsphttp:/localhost:8080/StrutsTagDemo02/Append.action5.subset标签subset标签用于筛选集合里的元素,取得集合的子集。它使用一个Filter,将不合格的元素过滤掉,剩下原集合的一个子集。subset需要使用decider属性,decider是个过滤器,必须实现SubsetIteratorFilter.Decider接口以及decide方法。示例:SubsetAction.java、subsetTag.jsp在地址栏输入:http:/localhost:8080/StrutsTagDemo02/Subset6. generator标签generator标签用于将字符串转化为List,相当于Java的split常用属性:count:该属性是一个可选的属性,该属性指定生成集合中元素的总数。separator:这是一个必填的属性,该属性指定用于解析字符串的分隔符。val:这是一个必填的属性,该属性指定被解析的字符串。converter:可选属性,指定了一个转换器,负责将集合中的每个字符串转换成对象。示例:generatorTag.jsp 1.3 数据标签以下标签示例均在StrutsTagDemo02项目中。1. action标签该标签用于在JSP页面中直接调用Action,并将结果包含进来,相当于JSP中的include,因为需要调用Action,故可以指定需要被调用Action的name及namespace。如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果(视图资源)包含到本页面中来。该标签有如下属性: id:可选属性,该属性将会作为该Action的引用ID。 name:必填属性,通过该属性指定该标签调用哪个Action。 namespace:可选属性,指定该标签调用的Action所在的namespace。 executeResult:可选属性,指定是否要将Action的处理结果页面包含到本页面。默认为false,即不包含。 ignoreContextParams:这是一个可选参数,它指定该页面中的请求参数是否需要传入调用的Action。默认为false,即将本页面的请求参数传入被调用的Action。示例:actionTag.jsp、若在地址栏输入:http:/localhost:8080/StrutsTagDemo02/actionTag.jsp?account=admin则将account参数值admin传递到了名为login的Action中。2 . bean标签bean标签用于引用某个JavaBean,以便访问其getter/setter方法。bean标签内部的会通过setter方法把字符串set到name属性上,会调用name属性的getter方法输出属性的值。beanTag.jsp示例:beanTag.jsp3. date标签date标签用于格式化日期输出,属性format设置时间格式字符串,例如yyyy-MM-DD,HH:mm:ss等。format支持JDK中的日期格式。date标签还有一个nice属性,默认为false。如果nice为true,会输出形如20days、6 hours ago、in 10 minutes等时间格式,此时format 属性不起作用。dateTag.jsp 示例:dateTag.jsp4 . include标签用于包含一个JSP页面(或Servlet),将JSP的执行结果包含到本页面内,相当于JSP行为里的。使用该标签有如下两个属性:value:必填属性,该属性指定需要被包含的JSP页面,或者Servlet。id:可选属性,该属性指定该标签的id引用。示例:includeTag.jsp5. param标签用于给其他标签传参数该标签可以接受如下参数:name:可选属性,指定需要设置参数的参数名。value:可选属性,指定需要设置参数的参数值。id:可选属性,指定引用该元素的id。6. set标签用于定义一个变量,并设置变量的值7 . property标签用于输出一个变量或者变量的属性,也可以直接输出当前Action的属性第2节 表单标签表单标签是Struts2标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论