JSTL概述

8.2.1  JSTL简介

从JSP 1.1规范开始JSP就支持使用自定义标签,使用自定义标签大大降低了JSP页面的复杂度,同时增强了代码的重用性,因此自定义标签在WEB应用中被广泛使用。许多WEB应用厂商都开发出了自己的一套标签库提供给用户使用,这导致出现了许多功能相同的标签,令网页制作者无所适从,不知道选择哪一家的好。为了解决这个问题,Apache Jakarta小组归纳汇总了那些网页设计人员经常遇到的问题,开发了一套用于解决这些常用问题的自定义标签库,这套标签库被SUN公司定义为标准标签库(The JavaServer Pages Standard Tag Library),简称JSTL。使用JSTL可以解决用户选用不同WEB厂商的自定义标签时的困惑,JSP规范同时也允许WEB容器厂商按JSTL标签库的标准提供自己的实现,以获取最佳性能。

由于JSTL是在JSP 1.2规范中定义的,所以JSTL需要运行在支持JSP 1.2及其更高版本的WEB容器上,例如,Tomcat 5.5。

1.JSTL的逻辑组成

笔者在写本章内容时的JSTL规范的最新版本是JSTL 1.1,它是JSP 2.0最新规范中的一个重要组成部分。JSTL 1.1中包含四个标签库和一组EL函数。为方便用户使用,JSP规范中描述了JSTL的各个标签库的URI地址和建议使用的前缀名,如表8.1所示。本章中在使用JSTL标签时,使用的都是这些建议的前缀。

 

表8.1  JSTL

标签库功能描述

标签库的URI

建议前缀

核心标签库

http://java.sun.com/jsp/jstl/core

c

XML标签库

http://java.sun.com/jsp/jstl/xml

x

国际化/格式化标签库

http://java.sun.com/jsp/jstl/fmt

fmt

数据库标签库

http://java.sun.com/jsp/jstl/sql

sql

EL自定义函数

http://java.sun.com/jsp/jstl/functions

fn

 

下面对JSTL的各个标签库进行简单的介绍:

1)核心标签库中包含了实现WEB应用中的通用操作的标签。例如,用于输出一个变量内容的<c:out>标签、用于条件判断的<c:if>标签、用于迭代循环的<c:forEach>标签。

2)国际化/格式化标签库中包含实现WEB应用程序的国际化的标签。例如,设置JSP页面的本地信息、设置JSP页面的时区、绑定资源文件,使本地敏感的数据(例如数值、日期等)按照JSP页面中设置的本地格式显示。

3)数据库标签库中包含用于访问数据库和对数据库中的数据进行操作的标签。例如,从数据源中获得数据库连接、从数据库表中检索数据等。由于在软件分层的开发模型中,JSP页面仅用作表现层,我们一般不在JSP页面中直接操作数据库,而是在业务逻辑层或数据访问层操作数据库,所以,JSTL中提供的这套数据库标签库没有多大的实用价值。

4XML标签库中包含对XML文档中的数据进行操作的标签。例如,解析XML文档、输出XML文档中的内容,以及迭代处理XML文档中的元素。因为XML广泛应用于WEB开发,对XML文档的处理非常重要,XML标签库使处理XML文档变得简单方便,这也是JSTL的一个重要特征。 

5JSTL中提供的一套EL自定义函数包含了JSP页面制作者经常要用到的字符串操作。例如,提取字符串中的子字符串、获取字符串的长度和处理字符串中的空格等。

2.JSTL的物理组成

完整的JSTL应包含SUN公司提供的jstl.jar 包和WEB容器产商提供的JSTL实现包,以Apache Jakarta 小组提供的JSTL实现包为例,完整的JSTL包含jstl.jar、standard.jar 和 xalan.jar 三个 jar 包。sun 公司提供的jstl.jar 包封装了 JSTL所要求的一些API 接口和类,Apache Jakarta 小组编写的 JSTL API 实现类封装在standard.jar包中。由于 JDK JDK 1.5 版本中才引入了 XPath API,而 apache Jakarta 小组开发的 JSTL API 是在 JDK1.5 之前推出的,所以 apache Jakarta 小组在 JSTL 中使用的是他们自己开发的 XPath API,这些 API 封装在 xalan.jar 包中。Standard.jar 包中包括核心标签库、国际化/格式化标签库、数据库标签库中的标签和标准的EL自定义函数的实现类,xalan.jar 包中包括 JSTL 解析 XPath 的相关 API 类。

8.2.2  安装和测试JSTL

1.下载JSTL包

可以从Apache的网站下载JSTL的jar包。进入http://jakarta.apache.org/taglibs/ 页面,根据相关的提示信息下载 zip压缩文件,这个压缩文件中包含JSTL的三个jar包。

提示:由于网站的不断升级,下载JSTL 的jar包的网址可能改变。读者在下载这些文件时,如果在指定的网址没有下载的链接,可以进入Apache的网站首页,然后根据相关的提示下载所需的文件。例如,笔者在编写JSTL初稿时,从http://jakarta.apache.org/taglibs/ 下载的压缩文件中只包含jstl.jar和standard.jar两个 jar 包,而 xalan.jar包要从 http://xml.apache.org/xalan-j/downloads.html 下载。

2.安装JSTL

在Tomcat中安装JSTL很简单,只要将 JSTL的jar包复制到<WEB应用程序>\WEB-INF\lib目录下即可。本章中所有的例子程序都在一个名为JSTL的WEB应用程序中运行,所以,将JSTL的三个jar包复制到 <TOMCAT_HOME>\webapps\JSTL\WEB-INF\lib目录下即完成了JSTL的安装

提示:Tomcat 5.5自带的JSP例子应用程序中提供了使用JSTL标签的例子,在<TOMCAT_HOME>\webapps\jsp-examples\WEB-INF\lib目录中有JSTL的jstl.jar包和standard.jar包,所以,对于读者来说,如果不使用JSTL的XML标签库中的标签,可以直接将这两个包复制到<WEB应用程序的主目录>\WEB-INF\lib目录中,而不用事先从Apache的网站下载JSTL的jar包。

3.测试JSTL

安装完JSTL后,接下来就可以准备测试JSTL安装得是否成功了。

Apache小组在提供JSTL时,同时也提供了JSTL标签的标签描述文件(即TLD文件),它们都封装在standard.jar包中,位于该jar文件的META-INF目录中。用WinRAR 打开standard.jar包,进入META-INF目录,可以看到JSTL标签的标签库描述文件。查看这些TLD源文件,可以看到文件中定义的<uri> 元素的内容与表8.1中列出的标签库的URI相同。因为standard.jar 包中封装了JSTL标签的标签库描述文件,Tomcat在启动时会自动加载standard.jar包中的META-INF目录下的所有TLD文件,所以使用JSTL时不必在web.xml文件中配置JSTL标签库的URI信息,就可以在JSP文件中直接使用JSTL标签。

要在JSP文件中使用JSTL,首先就需要使用taglib指令导入所需要使用的JSTL标签库,taglib指令的uri属性必须为相应标签库的TLD文件中的<uri>元素的值,taglib指令的prefix属性可以自己随意指定,但最好是采用表8.1中的建议前缀。在JSTL应用程序的主目录中按例程8-2编写一个包含JSTL标签的简单JSP文件test.jsp。

例程8-2 test.jsp

 


<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:out value="hello world!" />

 


上面的test.jsp页面中的<c:out>标签用于向浏览器输出文本内容,它属于JSTL的核心标签库中的标签由于在test.jsp文件中只使用了JSTL的核心标签库中的标签,所以,只需要使用一条taglib指令导入JSTL的核心标签库,而不必使用多条taglib指令导入JSTL的所有标签库。

启动Tomcat后,在浏览器地址栏中输入test.jsp页面的地址进行访问,如果浏览器中显示出了“hello world!”,说明JSTL安装成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值