没有合适的资源?快使用搜索试试~ 我知道了~
标准标签库_0519.doc
需积分: 5 0 下载量 92 浏览量
2023-11-24
21:21:06
上传
评论
收藏 1.82MB DOC 举报
温馨提示
试读
61页
标准标签库_0519
资源推荐
资源详情
资源评论
深入体验 JavaWeb 开发内幕—高级特性 张孝祥著 http://www.it315.org
0
第 8 章 标准标签库(JSTL)
8.1 准备实验环境
本章中所有的例子程序都在名为 JSTL 的 WEB 应用程序中运行,使用的 Tomcat 服务器版本为
Tomcat5.5。为了简化代码和突出重点,本章中所有的 JSP 网页文件的例子程序都省略了<html>、
<head>、<title>、<body>等 HTML 全局架构标签。本章中用于描述标签的语法的各种符号的意义
如下:
[…]:表示方括号中的内容是可选的;
{option1|option2|option3|…}:表示花括号中用“|”字符分隔的各个选项不能同时出
现,只能出现其中的一项;
如果属性的值字体加粗,表示这个值是对应属性的默认值;
如果属性的值用斜体字表示,表示该属性可以是表达式;如果标签体的内容用斜体字表示,
表示标签体的内容可以是 JSP 代码。
为了本章后面讲解的方便,这里先创建一个名为 UserBean 的 JavaBean 程序,如例程 8-1 所
示。
例程 8-1 UserBean.java
package org.it315;
public class UserBean
{
private String userName;
private String password;
private String address;
private int visitCount;
public void setUserName(String userName)
{
this.userName = userName;
}
public String getUserName()
{
return userName;
}
public void setPassword(String password)
{
this.password = password;
}
public String getPassword()
{
return password;
深入体验 JavaWeb 开发内幕—高级特性 张孝祥著 http://www.it315.org
1
}
public void setAddress(String address)
{
this.address = address;
}
public String getAddress()
{
return address;
}
public void setVisitCount(int visitCount)
{
this.visitCount = visitCount;
}
public int getVisitCount()
{
return visitCount;
}
}
编 译 这 个 源 程 序 , 将 编 译 后 的 UserBean.class 文 件 放 在
<TOMCAT_HOME>\webapps\JSTL\WEB-INF\classes\org\it315 目录中。
8.2 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 标签时,使用
的都是这些建议的前缀。
深入体验 JavaWeb 开发内幕—高级特性 张孝祥著 http://www.it315.org
2
表 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 中提供的这套数据库标签库没有多大的实用价值。
(4)XML 标签库中包含对 XML 文档中的数据进行操作的标签。例如,解析 XML 文档、输
出 XML 文档中的内容,以及迭代处理 XML 文档中的元素。因为 XML 广泛应用于 WEB 开发,
对 XML 文档的处理非常重要,XML 标签库使处理 XML 文档变得简单方便,这也是 JSTL 的一
个重要特征。
(5)JSTL 中提供的一套 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/ 页面,
深入体验 JavaWeb 开发内幕—高级特性 张孝祥著 http://www.it315.org
3
根据相关的提示信息下载 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 安装成功。
深入体验 JavaWeb 开发内幕—高级特性 张孝祥著 http://www.it315.org
4
8.3 核心标签库
JSTL 核心标签库包含了一组用于实现 WEB 应用中的通用操作的标签,JSP 规范为核心标签
库建议的前缀名为 c。
8.3.1 <c:out>标签
<c:out> 标签用于输出一段文本内容到 pageContext 对象当前保存的“out”对象中,在通常情
况下,pageContext 对象当前保存的“out”对象的数据是输出到客户端浏览器,所以,<c:out> 标
签通常用于输出一段文本内容到客户端浏览器。如果<c:out> 标签输出的文本内容中包含了需要
进行转义的 HTML 特殊字符,例如,<、>、'、"、&等,<c:out> 标签默认对它们按表 8.2 进行 HTML
编码转换后再进行输出,这样就可以在浏览器中显示出这些字符。
表 8.2 特殊字符转换
<c:out>标签标签有两种语法格式:
语法 1,没有标签体的情况:
<c:out value="
value
"
[escapeXml="{true|false}"]
[default="
defaultValue
"] />
语法 2,有标签体的情况,在标签体中指定输出的默认值:
<c:out value="
value
"
[escapeXml="{true|false}"] >
default value
</c:out>
<c:out>标签的属性说明如表 8.3 所示。
表 8.3 <c:out>标签的属性
属性名
是否支持 EL
属性类型
属 性 描 述
value
true
Object
指定要输出的内容
escapeXml
true
Boolean
指定是否将>、<、&、'、" 等特殊字符进行 HTML
编码转换后再进行输出。默认值为 true
default
true
Object
指定如果 value 属性的值为 null 时所输出的
默认值
当且仅当 value 属性的值为 null 时,<c:out> 标签输出默认值;如果没有指定默认值,默认
剩余60页未读,继续阅读
资源评论
小镇IT探险家
- 粉丝: 1874
- 资源: 257
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功