简介 JSP标准模板库(JSTL)是SUN公司发布的一个针对JSP开发的新组件。JSTL允许你使用标签(tags)来进行JSP页面开发,而不是使用多数JSP程序员已经习惯了的scriptlet代码方式开发。JSTL几乎能够做到传统JSP scriptlet代码能做的任何事情。你可能会疑惑,为什么我们需要另一种这样的HTML生成语言呢? STL允许JSP程序员使用tags而不是JAVA代码来编程。为了展示为什么这个是更优越的,下面将给出示例。我们会检查一个非常简单的从1数到10的JSP页面。我们将通过两种方法来检查,一种是基于JSP的scriptlet,一种是JSTL。当这个计数器页面的例子是用JSP scriptlet来编写时,JSP页面如下所示: <html> <head> <title>Count to 10 in JSP scriptlet</title> </head> <body> <% for(int i=1;i<=10;i++) {%> <%=i%><br/> <% } %> </body> </html> 正如你在上例中看到的看到的那样,使用scriptlet代码产生的页面源代码会包含混合的HTML标签和JAVA语句。这种混合型的编程方式不是最佳的方式,其主要原因有以下几点。 主要的原因是它的可读性。这个可读性主要依赖于人类和计算机。JSTL可以允许程序员查看一个只包含完整HTML和类似HTML的标签的页面。 SP scriptlet代码的可读性不适合人类。这种混合的scriptlet和HTML代码对于计算机来说也很难读。尤其是针对那些HTML官方工具如Dreamweaver和Microsoft FrontPage,所表现出来的不直观性更突出。目前,大多数HTML官方工具会以不可编辑块(non-editable blocks)的形式来隔离JSP scriptlet代码。这种HTML官方工具通常是不能直接修改JSP scriptlet代码的。 下面这段代码展示这个计数器范例如何使用JSTL方式来编写。正如你所看到的,这个代码列表有不变性,仅仅一个标签被使用。HTML和JSTL标签混合起来产生了这个程序。 <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <html> <head> <title>Count to 10 Example (using JSTL)</title> </head> <body> <c:forEach var="i" begin="1" end="10" step="1"> <c:out value="${i}" /> <br /> </c:forEach> </body> </html> 当你检查上面这个例子的代码时,你会看到,JSP页面只包含标签。上面的代码使用诸如<head>和<br>这样的HTML标签。这种标签用法不限制于HTML标签。这段代码也可以使用诸如<c:forEach>和<c:out>这样的JSTL标签。在本文中,将会介绍一些JSTL的基础。 安装JSTL 要使用JSTL,你必须安装有一个JSP1.2(或者更高版本)的容器。最普通的JSP容器是Apache Tomcat。你能够从http://jakarta.apache.org/tomcat/这里下载到。独立的Tomcat允许你使用常规的JSP scriptlet代码。要使用JSTL,你必须在Tomcat中安装JSTL。JSTL的主要URL是 http://java.sun.com/products/jsp/jstl/。要使用JSTL,必须解压这个文件,然后将它安装到Tomcat的正确位置。 要在Tomcat中安装JSTL,有下面三个步骤: 拷贝JSTL JAR文件到Tomcat的lib目录中. 如果你使用的是Windows, 那么lib目录最可能的位置是C:\Program Files\Apache Tomcat 4.0\webapps\ROOT\WEB-INF\lib。你应该拷贝这些JAR包到你的Tomcat JAR目录。 拷贝JSTL TLD文件到Tomcat的web-inf目录中 你检查JSTL发布文件时,你应该会注意到有8个文件是以TLD扩展名结尾的。所有这8个文件都应该复制到你的web-inf目录中。 修改web.xml文件包含这些TLD文件。 最后,你必须修改你的web.xml,添加8个标签库的表项(entry)。需要添加的表项如下所示: <taglib> <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri> <taglib-location>/WEB-INF/fmt.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri> <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location> </taglib> |