一.基本概念
1.标签(Tag):
标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本。由于标签是XML元素,所以它的名称和属性都是大小写敏感的
2.标签库(Tag library):
由一系列功能相似、逻辑上互相联系的标签构成的集合称为标签库。
3.标签库描述文件(Tag Library Descriptor):
标签库描述文件是一个XML文件,这个文件提供了标签库中类和JSP中对标签引用的映射关系。它是一个配置文件,和web.xml是类似的。
4.标签处理类(Tag Handle Class):
标签处理类是一个Java类,这个类继承了TagSupport或者扩展了SimpleTag接口,通过这个类可以实现自定义JSP标签的具体功能
二.自定义JSP标签
1. <% @ taglib prefix=”someprefix” uri=”/sometaglib” %>
为了使到JSP容器能够使用标签库中的自定义行为,必须满足以下两个条件:
1)从一个指定的标签库中识别出代表这种自定义行为的标签
2)找到实现这些自定义行为的具体类
第一个必需条件-找出一个自定义行为属于那个标签库-是由标签指令的前缀(Taglib Directive's Prefix)属性完成,所以在同一个页面中使用相同前缀的元素都属于这个标签库。每个标签库都定义了一个默认的前缀,用在标签库的文档中或者页面中插入自定义标签。所以,你可以使用除了诸如jsp,jspx,java,servlet,sun,sunw(它们都是在JSP白皮书中指定的保留字)之类的前缀。
uri属性满足了以上的第二个要求。为每个自定义行为找到对应的类。这个uri包含了一个字符串,容器用它来定位TLD文件。在TLD文件中可以找到标签库中所有标签处理类的名称
2. 当web应用程序启动时,容器从WEB-INF文件夹的目录结构的META-INF搜索所有以.tld结尾的文件。也就是说它们会定位所有的TLD文件。对于每个TLD文件,容器会先获取标签库的URI,然后为每个TLD文件和对应的URI创建映射关系。
在JSP页面中,我们仅需通过使用带有URI属性值的标签库指令来和具体的标签库匹配。
三.标签语言特点
- 模块化:自定义标签可以重用,减少了代码冗余,使得代码更加清晰简洁。
- 动态性:自定义标签可以基于不同的条件来生成不同的输出结果。
- 灵活性:自定义标签可以与其他JSP的标签类和JavaBean配合使用,增加代码的可扩展性。
- 可维护性:使用自定义标签可以很容易地维护和修改代码。
- 外部化:可以通过配置文件或属性文件来配置自定义标签,提供更高级的定制性。
- 可重用性:自定义标签可以在不同的项目中被重用,使得代码的开发成本和维护成本得到大大降低。
四. 自定义标签的开发及使用步骤
1.创建标签库类(继承BodyTagSupport)
标签属性必须与助手类的属性对应、并且要提供对应get/set方法
2.创建标签库文件(在WEB-INF)下面,以tld为后缀,添加自定义标签的配置
3.页面引入 在JSP通过taglib指令导入标签库,并通过指定后缀自定义标签
六..标签生命周期
分析图: