sun提供jsp标记库的作用:根据标记库可以定义适合自身公司业务发展的标签。自定义的标签文件一般都以tld为扩展名。
一、自定义标签头文件,sun提供的资源库:http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd
二、标记库解析
<!--
DTD定义了(.tld) (xml) 文件规范
标记库是一个JAR文件,包含标记库的有效实例、META-INF子目录中的描述符(taglib.tld)文件以及
适当的实施类和所需的其他资源实现其中定义的标签。
-->
<!--
所有JSP 1.2标记库描述符都必须包含DOCTYPE
以下形式:
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
-->
<!--
taglib 标签是根元素
tlib-version 标记库实现的版本
jsp-version 标记库所依赖的jsp版本
short-name 有助记符的名称,可使用简单的默认名称
uri 唯一标识标记库
display-name 包含一个简单的名称,旨在通过工具显示
small-icon 供工具可以使用的小图标
large-icon 供工具可以使用的大图标
validator 可以选择TagLibraryValidator实现类
listener 可以选事件监听器规范
-->
<!--
taglib 根元素目录下的子元素的描述:
(tlib-version, jsp-version, short-name, uri?,display-name?, small-icon?, large-icon?, description?,validator?, listener*, tag+)
tlib-version: #PCDATA ::= [0-9]*{ "."[0-9] }0..3
<!ELEMENT tlib-version (#PCDATA) >
jsp-version: 默认是1.2版本; #PCDATA ::= [0-9]*{ "."[0-9] }0..3
<!ELEMENT jsp-version (#PCDATA) >
short-name: 不能使用空格或者下划线开头
uri : 唯一标记标记库
description: 描述自定义的标签库
validator: 定义可用于的可选验证器,验证JSP页面与使用此标记库的一致性
validator-class:定义可用于的可选验证器,验证JSP页面与使用此标记库的一致性
init-param:初始化键值对参数
param-name:参数名称
param-value: 参数值
listener: 定义要实例化的可选事件侦听器对象自动注册。
listener-class:在应用程序中声明一个类,必须注册为Web应用程序侦听器bean。见Servlet2.3规范的详细信息。
-->
<!--
tag 根目录下的元素:tag (name,tag-class,tei-class?,body-content?,display-name?,small-icon?,large-icon?,description?,variable*, attribute*,example?)
name:tag名称
tag-class:实现javax.serlvet.jsp.tagext.Tag的子类
tei-class:实现javax.servlet.jsp.tagext,如果没有给出,则在翻译时不会咨询
body-content:提供有关此标记正文内容的提示。主要供页面组合工具使用。
tagdependent标记的主体由标记解释实现本身,最有可能在一个不同的“语言”,例如嵌入式SQL语句。
JSP标记的主体包含嵌套的JSP语法
空身体必须是空的
默认(如果未定义)是JSP
#PCDATA :: = tagdependent | JSP |空
display-name:包含一个预期的短名称通过工具显示。
small-icon:元素工具图标(32 x 32),文件名是其中的相对路径标签库。图像必须是JPEG或GIF格式
large-icon:元素工具图标(32 x 32),文件名是其中的相对路径标签库。图像必须是JPEG或GIF格式
description:标签描述
example:元素包含示例的非正式描述使用标签。
variable:变量 <!ELEMENT variable ( (name-given | name-from-attribute), variable-class?,
declare?, scope?, description?) >
name-given ;name-from-attribute :选择一个必填
variable-class:变量的可选名字,默认是java.lang.String
scop:脚本变量的范围。 有关详细信息,请参阅TagExtraInfo。该元素是可选的,默认为“NESTED”。其他合法的值为“AT_BEGIN”和“AT_END”。
attribute:属性 <!ELEMENT attribute (name, required? , rtexprvalue?, type?, description?) >
name : 属性名称
required:定义嵌套属性是必需的还是可选的。#PCDATA ::= true | false | yes | no
rtexprvalue:如果不存在则默认为“假”,即属性有一个静态值
type:定义属性值的Java类型。对于静态值(那些在翻译时确定的)类型总是如此java.lang.String中。
-->