JSP 标准标签库(JSTL)

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

根据JSTL标签所提供的功能,可以将其分为5个类别。

  • 核心标签
  • 格式化标签
  • SQL 标签
  • XML 标签
  • JSTL 函数

JSTL 库安装

使用 JSTL 需要引入 JSTL 的 JAR 包和标签库描述符文件(扩展名为 .tld),标签库描述符文件内包含标签库中所有标签的定义、标签名、功能类及各种属性。

JSTL JAR 包官方下载网址: https://tomcat.apache.org/download-taglibs.cgi

Jar说明:

Impl: taglibs-standard-impl-1.2.5.jar JSTL实现类库

Spec: taglibs-standard-spec-1.2.5.jar JSTL标准接口

EL: taglibs-standard-jstlel-1.2.5.jar JSTL1.0标签-EL相关

Compat: taglibs-standard-compat-1.2.5.jar 兼容版本

If you do not use JSTL 1.0 tags then the "taglibs-standard-jstlel" JAR may be
omitted. If you do not use the XML library, then the Apache Xalan dependencies
may also be omitted.

如果不用JSTL1.0版本的话,那么第三个EL jar包就没必要添加。实际应用中,一般添加前两个库就可以。

直接导入到Web-content目录下的WEB-INF中的lib文件夹。

注意:本教程使用的 JSTL 1.2,如果你使用的是 JSTL 1.1 或之前的版本,需要导入 jstl.jar 和 standard.jar 两个包。可点击 http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 链接下载 JSTL 1.1 及之前的版本。

使用 taglib 指令导入标签库描述符文件,例如要使用 JSTL 核心标签库,需要在 JSP 页面的上方增加如下指令:

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

taglib 指令通过 uri 属性引入某个标签库的配置文件,JSP 页面中通过 prefix 属性指定的前缀即可访问该标签库中的某个标签功能,如 <c:out>


JSTL 核心标签

核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
标签说明
<c:out>将表达式的结果输出到页面中,类似于 <%= ...%>
<c:set>在指定范围内设置变量或属性值
<c:if>类似于 Java if 语句,用于条件判断
<c:choose>类似于 Java switch 关键字,为 <c:when>和<c:otherwise> 的父标签
<c:when><c:choose> 的子标签,用来判断条件是否成立
<c:otherwise><c:choose> 的子标签,当所有的 <c:when> 标签判断为 false 时被执行
<c:forEach>类似于 Java for,用于迭代集合中的信息
<c:forTokens>类似于 Java split,用于分隔字符串
<c:remove>用于删除数据
<c:catch>用于捕获异常
<c:import>用来导入静态或动态文件
<c:param>用来传入参数
<c:redirect>用于将当前页面重定向至另一个 URL
<c:url>用于将 URL 格式化为一个字符串

JSTL 格式化标签

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:

<%@ taglib prefix="fmt" 
           uri="http://java.sun.com/jsp/jstl/fmt" %>
标签说明
<fmt:requestEncoding>设置请求数据的字符编码
<fmt:setLocale>用于设置用户本地化环境
<fmt:bundle>绑定资源
<fmt:message>用来从指定的资源文件中调用信息
<fmt:setBundle>绑定资源
<fmt:formatNumber>用于格式化数字、百分比和货币
<fmt:parseNumber>用于解析数字、货币和百分比
<fmt:formatDate>用于使用不同的方式格式化日期
<fmt:parseDate>用于把字符串类型的日期转换成日期数据类型
<fmt:timeZone>用于指定时区
<fmt:setTimeZone>用于设定默认时区

JSTL SQL标签

JSTL SQL标签库提供了与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签。引用SQL标签库的语法如下:

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
标签说明
<sql:setDataSource>用来在 JSP 页面中配置数据源
<sql:query>查询数据库中的数据
<sql:update>更新数据库中的数据
<sql:dateParam>提供日期和时间的动态值
<sql:transaction>事务管理
<sql:param>设置 SQL 语句中的动态值

JSTL 函数标签

JSTL XML标签库提供了创建和操作XML文档的标签。引用XML标签库的语法如下:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
标签说明
fn:contains()用于判断一个字符串是否包含指定的字符串,区分大小写
fn:containsIgnoreCase()用于判断一个字符串是否包含指定的字符串,不区分大小写
fn:endsWith()用于判断一个字符串是否以指定的后缀结尾
fn:escapeXml()用于转义 HTML/XML 中的字符
fn:indexOf()用于返回字符串在指定字符串中的开始位置
fn:join()用来将数组中的所有元素利用指定的分隔符来连接成一个字符串
fn:length()用于返回指定字符串的长度
fn:split()用于将字符串用指定的分隔符分隔为一个子串数组
fn:startsWith()用于判断一个字符串是否以指定的前缀开头
fn:substring()用来返回指定字符串的子字符串
fn:substringAfter()用来返回字符串中指定子字符串后面的部分
fn:substringBefore()用来返回字符串中指定子字符串前面的部分
fn:toLowerCase()用来将指定字符串中的所有字符转为小写
fn:toUpperCase()将指定字符串中的所有字符转为大写
fn:trim()用来删除指定字符串两端的空格

JSTL XML 标签

JSTL XML标签库提供了创建和操作XML文档的标签。引用XML标签库的语法如下:

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

在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的<Tomcat 安装目录>\lib下:

标签描述
<x:out>与<%= ... >,类似,不过只用于XPath表达式
<x:parse>解析 XML 数据
<x:set>设置XPath表达式
<x:if>判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体
<x:forEach>迭代XML文档中的节点
<x:choose><x:when>和<x:otherwise>的父标签
<x:when><x:choose>的子标签,用来进行条件判断
<x:otherwise><x:choose>的子标签,当<x:when>判断为false时被执行
<x:transform>将XSL转换应用在XML文档中
<x:param>与<x:transform>共同使用,用于设置XSL样式表