<tt:tag1 attr1=”obj1” value1=”value” />
<tt:tag2 attr1=”obj1” />
在以下这个例子当中,如果外层的tag标签创建了一个对象,那么其内层的所有tag标签都可以使用这个对象。由于这样产生的对象没有一个指定的名字,那么就可以将少重名的冲突。这个例子阐述了一系列协作的嵌套对象。
<tt:outerTag>
<tt:innerTag />
</tt:outerTag>
Tag处理类
Tag处理类必须实现Tag接口或BodyTag接口,不过现在一般都流行从TagSupport或BodyTagSupport类中继承,这些类或接口都可以在javax.servlet.jsp.tagext包中找到。
当JSP引擎看到自己的JSP页面中包含有tag标签时,它会调用doStartTag方法来处理tag标签的开头,调用doEndTag方法来处理tag标签的结束。
下表说明不同类型的tag所需要不同的处理过程:
Tag处理类的方法
Tag标签类型
所调用的方法
基本标签
doStartTag, doEndTag, release
带属性的标签
doStartTag, doEndTag, set/getAttribute1...N, release
带内容的标签
doStartTag, doEndTag, release
带内容的标签,
http://www.kpwang.com/且
内容重复循环
doStartTag, doAfterBody, doEndTag, release
带内容的标签,且内容与JSP交互
doStartTag, doEndTag, release, doInitBody, doAfterBody, release
一个tag处理类可以通过javax.servlet.jsp.PageContext来与JSP交互,通过javax.servlet.jsp.PageContext类,tag处理类可以访问JSP中的request、session和application对像。
如果tag标签是互相嵌套的,那内层的tag处理类可以通过它的parent属性来访问上层的tag处理类。
一般情况都将所有的tag处理类打成了JAR的包,以便于发布。
Tag库描述(简称TLD)
Tag库是用xml语言描述的,TLD包括了tag库中所有tag标签的描述,它一般用来被jsp服务器用来校验tag的语法正确性,或者被jsp开发者用来开发新的标签。
TLD的文件扩展名必须为.tld,而且必须放在当前WEB应用的WEB-INF目录或其子目录中。
一个TLD的内容的开头必须遵守标准的XML开头,用于描述DTD和xml的版本,例如:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
TLD必须以<taglib>来作为它的根元素,<taglib>的子元素如下表:
<taglib>的子元素
Element
Description
tlib-version
Tag库的版本
jsp-version
Tag库所需要的jsp的版本
short-name
助记符,tag的一个别名(可选)
uri
用于确定一个唯一的tag库
display-name
被可视化工具(诸如Jbuilder)用来显示的名称(可选)
small-icon
被可视化工具(诸如Jbuilder)用来显示的小图标(可选)
large-icon
被可视化工具(诸如Jbuilder)用来显示的大图标(可选)
description
对tag库的描述(可选)
<tt:tag2 attr1=”obj1” />
在以下这个例子当中,如果外层的tag标签创建了一个对象,那么其内层的所有tag标签都可以使用这个对象。由于这样产生的对象没有一个指定的名字,那么就可以将少重名的冲突。这个例子阐述了一系列协作的嵌套对象。
<tt:outerTag>
<tt:innerTag />
</tt:outerTag>
Tag处理类
Tag处理类必须实现Tag接口或BodyTag接口,不过现在一般都流行从TagSupport或BodyTagSupport类中继承,这些类或接口都可以在javax.servlet.jsp.tagext包中找到。
当JSP引擎看到自己的JSP页面中包含有tag标签时,它会调用doStartTag方法来处理tag标签的开头,调用doEndTag方法来处理tag标签的结束。
下表说明不同类型的tag所需要不同的处理过程:
Tag处理类的方法
Tag标签类型
所调用的方法
基本标签
doStartTag, doEndTag, release
带属性的标签
doStartTag, doEndTag, set/getAttribute1...N, release
带内容的标签
doStartTag, doEndTag, release
带内容的标签,
http://www.kpwang.com/且
内容重复循环
doStartTag, doAfterBody, doEndTag, release
带内容的标签,且内容与JSP交互
doStartTag, doEndTag, release, doInitBody, doAfterBody, release
一个tag处理类可以通过javax.servlet.jsp.PageContext来与JSP交互,通过javax.servlet.jsp.PageContext类,tag处理类可以访问JSP中的request、session和application对像。
如果tag标签是互相嵌套的,那内层的tag处理类可以通过它的parent属性来访问上层的tag处理类。
一般情况都将所有的tag处理类打成了JAR的包,以便于发布。
Tag库描述(简称TLD)
Tag库是用xml语言描述的,TLD包括了tag库中所有tag标签的描述,它一般用来被jsp服务器用来校验tag的语法正确性,或者被jsp开发者用来开发新的标签。
TLD的文件扩展名必须为.tld,而且必须放在当前WEB应用的WEB-INF目录或其子目录中。
一个TLD的内容的开头必须遵守标准的XML开头,用于描述DTD和xml的版本,例如:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
TLD必须以<taglib>来作为它的根元素,<taglib>的子元素如下表:
<taglib>的子元素
Element
Description
tlib-version
Tag库的版本
jsp-version
Tag库所需要的jsp的版本
short-name
助记符,tag的一个别名(可选)
uri
用于确定一个唯一的tag库
display-name
被可视化工具(诸如Jbuilder)用来显示的名称(可选)
small-icon
被可视化工具(诸如Jbuilder)用来显示的小图标(可选)
large-icon
被可视化工具(诸如Jbuilder)用来显示的大图标(可选)
description
对tag库的描述(可选)