标签库Taglib
标签被定义和分布在一个称为标签库的结构中,一个标签库是由元信息和类组成的集合:
1.标签处理器:实现定制标签功能的Java类。
2.标签附加信息(TEI):向JSP容器提供边辑以确认标签属性和创建变量的类。
3.标签库描述器(TLD):描述单个标签和整个标签库属性的XML文档。
标签处理器和标签附加信息需要定位在JSP容器类载入器可以找到的地方。标签库描述器可在URL指定的符意位置。JSP1.1规范要求JSP容器接受一个打包成因定结构的JAR文件的标签库。TLD必须是/META-INF目录中名为taglib.tld的文件,JAR文件则复制到/WEB-INF/lib目录下。
一、标签实现
1.开发步骤
a.定义标签的名字、属性、声明的变量和标签体的内容。
b.编写标签库描述器TLD。
c.编写标签处理器。
d.在JSP页面中使用标签。
2.JSP页面在JSP容器中的转换步骤:
JSP页面存在三种形式:jsp文件、java文件和class文件。
a.指令元素、和向JSP容器提供转换时信息。
b.HTML行在_jspService()方法中依顺序转换到out.print()语名中。
c.脚本元素的声明被原封不动地复制到_jspService()方法外的源码中。
d.脚本元素的表达式在_jspService()方法中依顺序转换到out.print()语名中。
e.脚本元素的Scriptlet被原封不动地复制到_jspService()方法中。
f.行为元素被转换为执行其功能的运行时逻辑代码。
g.定制标签被扩展到调用其相应标签处理器中方法的Java语句中。
3.标签在JSP容器中的转换步骤:
a.JSP容器使用taglib指令元素定位标签库描述器,将页面中用到的定制标签和TLD相匹配。
b.读取标签库描述器的标签列表和每一标签相关的类名字。
c.在页面中遇到一个标签时,查找与具有指定名字的标签前缀相关的一个标签库。
d.容器使用在TLD中找到的标签结构信息生成一系列完成标签功能的Java语句。
二、标签库描述器(TLD)
标签库描述器是一个描述整个标签库标记信息和库中每个标签处理器及其属性的XML文档。
标签库描述器的DTD由一个简单的元素组成,此元素包含下列一些子元素。
整个标签库标记信息
tlibversion 标签库版本号。是一个点式十进制数,最多为4组小数点分隔的数字组成。
jspversion 标签库所需的JSP规范最低版本。例如JSP1.1
shortname 标签库的缩写名。JSP可以使用该名字作为库中标签的缺省前缀。
uri 标签库唯一URI的元素。典型URL位置来自可下载taglib的位置。
info 标签库描述信息。
每个标签处理器及其属性
tag 在TLD中加入标签,描述组成库的每个标签。
name 与标签库的名字前缀一起使用的标签的名字, 是JSP容器唯一的标签标识。
tagclass 实现标签的标签处理器类的全名。
teiclass 标签附加信息(TEI)类的全名。TEI类给出关于标签处理器创建变量及对标签司性执行的任意有效性验证的信息。
bodycontent 描述标签处理器如何使用标签体的内容。有三种取值:
empty:表示标签体必须为空;
JSP:表示脚本元素和模板及其它标签一样被评估。
tagdependent:体内容被原封不动写入BodyContent,其它脚本元素以源码形式出现,而不被JSP容器解释。
info 标签的人工可读描述性信息。
attribute 使用标签时被编码的属性信息。用于定义标签的属性。
属性名:属性的名字。
true|false:属性在标签用到的位置是否要被编码。
true|false:属性值能否用表达式指定。
三、标签处理器
标签处理器是通过实现JSP容器调用的一系列预定义方