极客学院团队出品 · 更新于 2018-11-28 11:00:43

JSP - 标准标签库

JSP 标准标签库(JSTL)是一组有效的 JSP 标签,它封装了很多 JSP 应用程序的核心功能。

JSTL 支持普通、结构任务,如迭代和条件,操作 XML 文件标签,国际化标签,和 SQL 标签。它也提供了一个整合现有 JSTL 标签和自定义标签的框架。

JSTL 标签根据它们的功能进行分类,划分到 JSTL 标签库中,当创建一个 JSP 页面时,可以使用这些标签:

  • 核心标签库

  • 格式标签库

  • SQL 标签库

  • XML 标签库

  • JSTL 函数标签库

安装 JSTL 标签库

如果你使用的是 Apache Tomcat 容器,然后遵循以下两个简单的步骤:

  • 从 Apache Standard Taglib,下载二进制分布,打开压缩文件。

  • 为了从 Jakarta Taglibs 分布中使用标准标签库,简单的复制分布库目录中的 JAR 文件到你的应用程序的 webapps\ROOT\WEB-INF\lib 目录中。

为了使用所有的库,你必须在要使用该库的每个 JSP 页面的头部中引入指令。

核心标签库

核心标签库是被广泛使用的 JSTL 标签库。下面是在 JSP 页面中引入核心标签库时需要使用的指令:

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

接下来的是核心标签库的标签:

标签 描述
<c:out > 类似于 java 表达式,但是表达式。
<c:set > 在某个范围内设置表达式的值。
<c:remove > 删除一个域变量(从一个特殊的被指定的范围)。
<c:catch> 抛出任何发生在它的主体中的异常,并且有选择的公开它。
<c:if> 简单的条件标签,如果提供的条件是 true,则执行标签体的内容。
<c:choose> 简单的条件标签,用标签和建立一个互斥条件操作的上下文。
<c:when> 的子标签,如果它的条件为“true”,则运行标签体的内容。
<c:otherwise > 的子标签,它出现在标签之后,只有当先前的条件结果为“false”运行它。
<c:import> 检索绝对或相对的 URL 并且显示它的内容到其他的页面,在“var”中的一个 String 类型,或者在“varReader”中的一个 Reader 类型。
<c:forEach > 基本的迭代标签,接受多种不同的集合类型,支持子集和其他的功能。
<c:forTokens> 迭代使用分隔符,分隔提供的定界符。
<c:param> 添加一个参数到包含“import”标签的 URL。
<c:redirect > 重新定向到的一个新的 URL。
<c:url> 创建一个带有选项查询参数的 URL。

格式标签库

JSTL 的格式标签库是用于格式化和显示国际化网址的文本、日期、时间和数字。下面是在 JSP 页面中引入格式标签库时需要使用的指令:

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

接下来的是格式标签库的标签:

标签 描述
<fmt:formatNumber> 用特定的精度或格式呈现数值。
<fmt:parseNumber> 将一个表示数值、货币或百分比格式化字符串解析成数值对象。
<fmt:formatDate> 将日期和/或时间对象格式化成指定的风格和模式
<fmt:parseDate> 将用字符串表示的日期和/或时间解析成日期对象。
<fmt:bundle> 使用它的标签体来加载一个资源包。
<fmt:setLocale> 在区域配置变量中存储指定的区域。
<fmt:setBundle> 加载一个资源包并且将其存储在指定作用域或者资源包配置变量中。
<fmt:timeZone> 在标签体的内容中,对指定的时区进行时间格式化和解析操作。
<fmt:setTimeZone> 将指定的时区存储在时区配置变量中。
<fmt:message> 显示国际化的信息。
<fmt:requestEncoding> 设置请求中字符的编码格式。

SQL 标签库

JSTL 的 SQL 标签库提供了标签给交互的关系数据库(RDBMSs)如 Oracle、mySQL 或 Microsoft SQL Server。

下面是在 JSP 页面中引入格式标签库时需要使用的指令:

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

接下来的是格式标签库的标签:

标签 描述
<sql:setDataSource> 创建一个简单的只适合原型的数据源。
<sql:query> 在它的标签体中或通过 SQL 属性,执行定义的 SQL 查询操作。
<sql:update> 在它的标签体中或通过 SQL 属性,执行定义的 SQL 更新操作。
<sql:param> 将 SQL 语句中的一个参数设置为指定的值。
<sql:dateParam> 将 SQL 语句中的一个参数设置为指定的 java.util.Date 值。
<sql:transaction > 为嵌套数据库操作元素提供了一个共享连接,建立执行所有语句组成一个事务。

XML 标签库

JSTL 的 XML 标签库提供了创建和操纵 XML 文档的 JSP-centric 方式。下面是在 JSP 页面中引入 XML 标签库时需要使用的指令:

对于交互的 XML 数据,JSTL 的 XML 标签库有自定义标签。它包括解析 XML、转换XML 数据和基于 XPath 语言表达式的流程控制。

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

在你处理这个例子之前,你应该需要复制以下两个 XML 和 XPath 相关的库到你的 \lib 中:

接下来的是格式标签库的标签:

Following is the list of XML JSTL Tags:

标签 描述
<x:out> 类似于 java 表达式 ,但是 XPath 表达式。
<x:parse> 要么通过属性要么在标签体中,用于解析特定的XML数据。
<x:set > 设置 XPath 表达式的变量值。
<x:if > 计算测试的XPath表达式,如果它是 true,就执行它的标签体中的内容。如果测试条件是 false,忽略这个标签体中内容。
<x:forEach> 在 XML 文件中循环顶点。
<x:choose> 简单的条件标签,用标签和建立一个互斥条件操作的上下文。
<x:when > 的子标签,如果它的条件为“true”,则运行标签体的内容。
<x:otherwise > 的子标签,它出现在标签之后,只有当先前的条件结果为“false”运行它。
<x:transform > 应用一个 XSL 转换到一个 XML 文件中。
<x:param > 在 XSLT 样式表中使用转换标签设置参数。

JSTL 函数标签库

JSTL 函数标签库包含了大量的标准函数,其中大多数都是御用字符串处理的函数。下面是在 JSP 页面中引入 JSTL 函数标签库时需要使用的指令:

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

接下来的是 JSTL 函数标签库的标签:

函数 描述
fn:contains() 判断输入的字符串是否包含指定的子字符串。
fn:containsIgnoreCase() 判断输入的字符串是否包含指定的子字符串,判断时忽略大小写。
fn:endsWith() 判断输入的字符串是否以指定的字符串作为后缀。
fn:escapeXml() 忽略字符串中的 XML 标签。
fn:indexOf() 返回字符串在指定的字符串第一次出现的位置。
fn:join() 连接数组中所有的元素到一个字符串中。
fn:length() 返回集合中的项数或者字符串的字符数。
fn:replace() 返回用输入字符串替换到给定的字符串所有出现的位置中所得到的新字符串。
fn:split() 将一个字符串分割成子字符串数组。
fn:startsWith() 判断输入的字符串是否以指定的字符串作为开头。
fn:substring() 返回字符串的子串
fn:substringAfter() 返回在指定子字符串之前的字符串的子串
fn:substringBefore() 返回在指定子字符串之后的字符串的子串
fn:toLowerCase() 转换字符串中的所有字符为小写字符
fn:toUpperCase() 转换字符串中的所有字符为大写字符
fn:trim() 去除字符串两端的空格