假定甲方打算使用乙方开发的标签库。乙方把与标签库相关的所有文件打包成为一个JAR文件(假定名为standard.jar),在这个JAR文件中包含以下内容:
所有标签处理类及相关类的.class文件。
META-INF目录。在这个目录下有一个描述标签库的TLD文件(假定名为c.TLD文件),在这个TLD文件中,假定为标签库设置的uri为"http://java.sun. com/jsp/jstl/core":
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>JSTL 1.1 core library</description>
<display-name>JSTL core</display-name>
<tlib-version>1.1</tlib-version>
<short-name>c</short-name>
<uri>http://java.sun.com/jsp/jstl/core</uri>
… </taglib> |
甲方要开发一个helloapp应用,可以采用两种方式使用乙方的标签库。第一种方式包括如下步骤。
(1)把standard.jar文件复制到/lib目录或者helloapp/WEB- INF/lib目录下。
(2)在JSP文件中通过taglib指令声明标签库,taglib指令中的uri属性应该与上述c.TLD文件中的元素匹配。例如以下sample.jsp使用了乙方提供的标签库中的标签:
当Servlet容器运行以上out.jsp时,会自动到stardard.jar文件的META-INF目录中读取c.TLD文件。
甲方使用乙方的标签库的第二种方式包括如下步骤。
(1)把乙方的standard.jar文件展开,然后把META-INF目录中的c.TLD文件复制到helloapp/WEB-INF目录下。
(2)从乙方的standard.jar文件的展开目录中删除META-INF目录下的c.TLD文件,再把不包含c.TLD文件的展开目录重新打包为standardNew.jar文件。
(3)把standardNew.jar文件复制到/lib目录或者helloapp/ WEB-INF/lib目录下。
(4)在helloapp应用的web.xml文件中声明引入标签库:
<taglib> <taglib-uri>/corelib</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib> |
(5)在JSP文件中通过taglib指令声明标签库,taglib指令中的uri属性应该与上述web.xml文件中的元素匹配。例如以下sample.jsp使用了乙方提供的标签库中的标签:
比较上述两种方式,可以看出第一种方式更加方便,因此本章将采用第一种方式使用JSTL标签库。