TLD文件配置详解
tld是taglib description 的缩写定制标签拼图中的最后一块是TLD(标签库描述符) 文件。创建的每个标签都必须在一个TLD文件中声明,而且这一文件还必须连同标签的Java处理器类一起被部署。正如在前一节中所看到的,servlet 容器知道在何处放置了TLD文件,因为已经在web.xml标准servlet配置文件中声明了路径。定制标签拼图中的最后一块是TLD(标签库描述符)
tld是taglib description 的缩写
定制标签拼图中的最后一块是TLD(标签库描述符) 文件。创建的每个标签都必须在一个TLD文件中声明,而且这一文件还必须连同标签的Java处理器类一起被部署。正如在前一节中所看到的,servlet 容器知道在何处放置了TLD文件,因为已经在web.xml标准servlet配置文件中声明了路径。
定制标签拼图中的最后一块是TLD(标签库描述符) 文件。创建的每个标签都必须在一个TLD文件中声明,而且这一文件还必须连同标签的Java处理器类一起被部署。正如在前一节中所看到的,servlet 容器知道在何处放置了TLD文件,因为已经在web.xml标准servlet配置文件中声明了路径。
可以看到,TLD文件只不过是一个XML文件。根标 签是<taglib>,它包含一个或者多个<tag>标签,该元素用来声明定制标签。表4-1、表4-2和表4-3解释了TLD 中的每个标签。注意每个<taglib>都必须包含一个或者多个<tag>声明。
表 4-1 TLD文件中的标签
标 签 | 含 义 |
taglib | TLD文件的根标签 |
tlibversion | 此标签库的版本 |
jspversion | 此标签库依赖的JSP版本。这里使用1.1 |
shortname | 当在JSP中使用标签时,此标签库首选或者建议的前缀。当然可以完全忽略这个建议 |
tag | 包含针对此标签库中的一个标签的元数据 |
表4-2 <tag>的子标签
标 签 | 含 义 |
name | 标签名称 |
tagclass | Java标签处理器类的名称。注意这是处理器类的全限定名称,比如net.thinksquared.tags. MessageWriteTagHandler |
bodycontent | 此标签的主体部分的内容。使用JSP |
attribute | 包含了此标签的一个属性的元数据 |
表4-3 <attribute>的子标签
标 签 | 含 义 |
name | 属性的名称。很明显它在该标签中必须是唯一的 |
required | 指示该标签是必需的(true)或者可选的(false) |
实验:
例如,下面的代码将100摄氏度转换为212华氏度:
而下面这些代码则将100摄氏度转换为373开氏度:
为了创建这个标签,必须做到以下几点:
(1) 准备开发目录和脚本;
(2) 编写Java标签处理器类;
(3) 编写TLD文件来描述标签;
(4) 编写JSP来测试定制标签;
(5) 修改web.xml来注册TLD文件;
(6) 将应用程序安装到Tomcat中。
步骤1:准备开发环境和脚本
在硬盘合适的地方创建一个Struts目录。
解压,请确保保留了原来的目录结构。
应该能够看到.\Struts\lab4\子目录。
(在文本编辑器中打开.\Struts\lab4\compile.bat文件,并且修改PATH环境变量以便它指向JDK安装位置。
注意 在Windows XP、Windows ME或者Windows 2000中,系统内置了解压能力,但是系统解压的文件可能会加上一个额外的lab4目录到被解压的路径中。所以,compile.bat文件的路径可能变成是.\Struts\lab4\lab4\compile.bat。可以将文件夹向上移动,或者就放在那儿。编译脚本也能够正确运行。
步骤2:编写Java标签处理器
(1) 在文本编辑器中打开文件.\src\Converter.java。
(2) 添加一个私有的字符串变量_to。这将对应于定制标签的to属性。
(3) 创建一个getTo()和setTo()方法来获得和设置_to的值。servlet容器将使用这些方法来通过属性(attribute)to的值获得/设置属性(property)_to的值。
(4) 完成doAfterBody()方法,使用上面所属的需求规格。需要使用辅助类来做这些工作(详见代码清单4-4)。
(5) 注意doAfterBody()必须返回整数值的标记EVAL_PAGE来指示JSP页面的剩余部分是否需要继续处理。
(6) 单击compile.bat进行编译工作。
步骤3:编写标签库描述文件
(1) 在文本编辑器中打开.\web\WEB-INF\lab4-converter.tld文件。
(2) 这是一个空的TLD文件,只包含强制的样板文件。在样板之后创建一个根<taglib>... </taglib>元素。
(3) 在<taglib>元素之内,插入一个适当的标签定义,把代码清单4-5作为一个参考。
4.6.4 步骤4:修改web.xml
web.xml是一个标准的servlet配置文件。每个Web应用程序,甚至空的Web应用程序都必须要有自己的web.xml文件。
注意 如果将TLD文件放到WEB-INF目录中,实际上完全不必在web.xml中声明它们。但是,为了完整起见,我们会这样做。
(1) 在文本编辑器中打开.\web\WEB-INF\web.xml文件。注意web目录仅存在于开发时。compile.bat脚本会将整个WEB-INF目录上移,并且删除web文件夹。
(2) web.xml文件包含了样板文本,后面跟了一个<webapp>标签。将代码清单4-6所示的标签插入<webapp>元素封装标签之内。
代码清单4-6 插入到web.xml的代码
注意 请注意在代码清单4-6中,路径分隔符是UNIX风格的斜线(/),而不是Windows风格的反斜线(\)。
步骤5:编写JSP
(1) 在文本编辑器中打开文件.\web\test.jsp。
(2) 在JSP中加入定制标签库的taglib声明。记住使用在web.xml中定义的URI。
(3) 放入相应的标签代码来测试convert标签。至少应该测试一下在本实验开头所给出的全部例子。
步骤6:部署和测试
(1) 如果Tomcat在运行,请停止它。
(2) 单击compile.bat。这将编译源代码,并且产生一个WAR文件lab4.war。
(3) 将WAR文件拖到Tomcat的webapps目录中。记住,如果想要重新部署lab4应用,必须删除在webapps目录下的原有子目录。
(4) 启动Tomcat。使用http://localhost:8080/lab4/进行测试工作。
如果在某处被卡住了,你可能想要参考本实验的答案。可以在www.apress.com上的lab4-answers.zip文件中找到答案
更多推荐
所有评论(0)