文档详情

JSP应用与开发技术 教学课件 作者 978 7 302 24762 3 第15章 自定义标签库.ppt

发布:2017-08-16约3.67千字共23页下载文档
文本预览下载声明
第15章 自定义标签库 自定义标签实际上是一个实现了特定接口的Java类,类定义了执行该标签操作的具体逻辑。然后再定义标签库描述文件,并把该文件导入到Web部署描述符中,该文件定义了一组标签与标签类的对应关系。最后就可以在JSP页面中导入并使用自定义的标签。在运行时,标签将被相应的代码所替换。标签的集合构成了标签库。 15.1自定义标签体系介绍 标签库API定义在javax.servlet.jsp.tagext包中,其中主要接口和类如图15-1所示。 15.1.1标签的形式 自定义标签四种形式: 空标签 title/ 带有属性的空标签 title length=”20” / 带有内容的标签 title JSP 程序设计 /title 带有内容和属性的标签 title length=”20” JSP 程序设计 / title 15.1.2标签类相关接口和类 1.Tag接口 javax.servlet.jsp.tagext.Tag接口定义了所有的传统标签处理器需要实现的基本方法。Tag接口中的方法如表15-1所示,Tag接口中定义的常量如表15-2所示。 传统标签的生命周期如图15-2所示 2.IterationTag接口 javax.servlet.jsp.tagext.IterationTag接口继承自Tag接口,它新增了一个方法和一个用做返回值的常量,主要用于控制对标签体的重复处理。新增的方法和常量如表15-3所示。 3.BodyTag接口 javax.servlet.jsp.tagext.BodyTag接口继承自IterationTag接口,它新增了两个方法和一个用做返回值的常量。实现该接口的标签处理器可以在其内部对标签体执行后的内容进行处理。新增的方法和常量如表15-4所示。 实现BodyTag接口的标签处理器的生命周期,如图15-3所示。 15.1.3 标签库描述文件 标签库描述文件定义了标签与标签类的对应关系,它是.XML格式的文档,简称TLD。TLD包含库的所有信息及库中的每个标签,TLD文件以扩展名.tld为后缀。当标签库部署在JAR文件中时,标签库描述文件必须放在META-INF目录或其子目录下;当标签库直接部署到Web应用程序中时,标签库描述文件必须放在WEB-INF目录或其子目录下,但不能放在/WEB-INF/classes或/WEB-INF/lib目录下 15.1.4 在Web部署描述符中引入标签库文件 容器在解析页面中的自定义标签的时候会到Web部署描述符中寻找该标签库的TLD文件,因此需要在web.xml把标签库文件引入 在web.xml的根元素web-app下通过jsp-config元素指定要引入的标签库。一个标签库对应一个taglib元素,对于一个应用来说可以存在多个标签库。其中taglib-uri元素指定在JSP页面中使用的自定义标签的URI名字,JSP页面通过此名字在JSP指令引入自定义标签;taglib-location元素指定了该名字所对应的TLD文件存放的位置。 15.1.6 标签在Web页面里的作用 自定义标签其实也是一个类,它封装了相应的逻辑功能,和JavaBean很类似,但是它们之间存在很大的区别:JavaBean通过提供接口供外部操作调用实现逻辑功能,而自定义标签是通过标签的形式为外部操作实现逻辑功能 15.2 传统标签的开发 15.2.1带属性标签的开发 第一步:编写标签处理类 第二步:在TLD文件MyTaglib.tld中配置myfont标签 第三步:在web.xml文件中配置标签库信息 第四步:编写测试页面attitudeTag.jsp 15.2.2 带Body标签的开发 BodyTag有一个实现类BodyTagSupport,开发带标签体的自定义标签时,直接继承类BodyTagSupport。 第一步:编写BodyTag.java 第二步:在TLD文件中配置标签 第三步:在web.xml文件中配置标签库信息。 第四步:编写测试页面 15.2.3 嵌套标签的开发 程序开发中,常常需要多个标签嵌套完成一个任务,这样标签就存在父子关系。 【例15-5】下面我们来开发这三个标签,其中switch为父标签,case和default为子标签。 第一步:开发标签三个处理器类SwitchTag.java、CaseTag.java和DefaultTag.java SwitchTag.java 第二步:在TLD文件MyTaglib.tld中配置switch、case和default标签 第三步:在web.xml文件中配置标签库信息。 第四步:编写测试页面switchTag.jsp 15.2.4迭代标签的开发 在程序开发中迭代输出集
显示全部
相似文档