JSP - 标准标记库 (JSTL) 教程


在本章中,我们将了解 JSP 中的不同标签。JavaServer Pages 标准标记库 (JSTL) 是有用的 JSP 标记的集合,它封装了许多 JSP 应用程序常见的核心功能。

JSTL 支持常见的结构化任务,例如迭代和条件、用于操作 XML 文档的标签、国际化标签和 SQL 标签。它还提供了一个框架,用于将现有的自定义标签与 JSTL 标签集成。

安装 JSTL 库

要开始使用 JSP 标记,您需要首先安装 JSTL 库。如果您使用 Apache Tomcat 容器,请按照以下两个步骤操作 -

步骤 1 - 从Apache Standard Taglib下载二进制发行版并解压压缩文件。

步骤 2 - 要使用Jakarta Taglibs 发行版中的标准 Taglib ,只需将发行版“lib”目录中的 JAR 文件复制到应用程序的webapps\ROOT\WEB-INF\lib目录即可。

要使用任何库,必须在使用该库的每个 JSP 顶部包含 <taglib> 指令。

JSTL标签的分类

JSTL 标签可以根据其功能分为以下 JSTL 标签库组,这些组可在创建 JSP 页面时使用 -

  • 核心标签

  • 格式化标签

  • SQL 标签

  • XML标签

  • JSTL 函数

核心标签

核心标签组是最常用的 JSTL 标签。以下是将 JSTL Core 库包含在 JSP 中的语法 -

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

下表列出了核心 JSTL 标签 -

编号 标签和描述
1 <c:输出>

类似于 <%= ... >,但用于表达式。

2 <c:设置>

在“范围”中设置表达式求值的结果

3 <c:删除>

删除作用域变量(从特定作用域中,如果指定)。

4 <c:catch>

捕获其体内出现的任何Throwable并可选择将其公开。

5 <c:如果>

简单的条件标签,如果提供的条件为真,则评估其主体。

6 <c:选择>

简单的条件标签,为互斥条件操作建立上下文,由<when><otherwise>标记。

7 <c:何时>

<choose>的子标签,如果其条件评估为'true' ,则包含其正文。

8 <c:否则>

<choose>的子标签位于<when>标签之后,并且仅当所有先验条件评估为'false'时才运行。

9 <c:导入>

检索绝对或相对 URL 并将其内容公开给页面、 'var'中的字符串或'varReader'中的 Reader 。

10 <c:forEach>

基本的迭代标签,接受许多不同的集合类型并支持子集化和其他功能。

11 <c:forTokens>

迭代由提供的分隔符分隔的标记。

12 <c:参数>

将参数添加到包含“导入”标记的 URL。

13 <c:重定向>

重定向到新的 URL。

14 <c:网址>

创建带有可选查询参数的 URL

格式化标签

JSTL 格式化标签用于格式化和显示国际化网站的文本、日期、时间和数字。以下是在 JSP 中包含格式化库的语法 -

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

下表列出了格式化 JSTL 标签 -

编号 标签和描述
1 <fmt:格式编号>

以特定精度或格式呈现数值。

2 <fmt:解析编号>

解析数字、货币或百分比的字符串表示形式。

3 <fmt:格式化日期>

使用提供的样式和模式设置日期和/或时间的格式。

4 <fmt:解析日期>

解析日期和/或时间的字符串表示形式

5 <fmt:捆绑>

加载要由其标签主体使用的资源包。

6 <fmt:setLocale>

将给定的区域设置存储在区域设置配置变量中。

7 <fmt:setBundle>

加载资源包并将其存储在命名范围变量或包配置变量中。

8 <fmt:时区>

指定嵌套在其正文中的任何时间格式化或解析操作的时区。

9 <fmt:设置时区>

将给定时区存储在时区配置变量中

10 <fmt:消息>

显示国际化消息。

11 <fmt:请求编码>

设置请求字符编码

SQL标签

JSTL SQL 标记库提供用于与关系数据库 (RDBMS)(例如Oracle、mySQLMicrosoft SQL Server )交互的标记。

以下是在 JSP 中包含 JSTL SQL 库的语法 -

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

下表列出了 SQL JSTL 标签 -

编号 标签和描述
1 <sql:设置数据源>

创建一个仅适合原型设计的简单数据源

2 <sql:查询>

执行在其主体中或通过 sql 属性定义的 SQL 查询。

3 <sql:更新>

执行在其主体中或通过 sql 属性定义的 SQL 更新。

4 <sql:参数>

将 SQL 语句中的参数设置为指定值。

5 <sql:日期参数>

将 SQL 语句中的参数设置为指定的 java.util.Date 值。

6 <sql:事务>

提供带有共享连接的嵌套数据库操作元素,设置为将所有语句作为一个事务执行。

XML标签

JSTL XML 标记提供了一种以 JSP 为中心的创建和操作 XML 文档的方法。以下是将 JSTL XML 库包含在 JSP 中的语法。

JSTL XML 标记库具有用于与 XML 数据交互的自定义​​标记。这包括解析 XML、转换 XML 数据以及基于 XPath 表达式的流程控制。

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

在继续示例之前,您需要将以下两个 XML 和 XPath 相关库复制到<Tomcat Installation Directory>\lib中-

以下是 XML JSTL 标签的列表 -

编号 标签和描述
1 <x:输出>

类似于 <%= ... >,但适用于 XPath 表达式。

2 <x:解析>

用于解析通过属性或标记主体中指定的 XML 数据。

3 <x:设置>

将变量设置为 XPath 表达式的值。

4 <x:如果>

评估测试 XPath 表达式,如果为 true,则处理其主体。如果测试条件为假,则忽略正文。

5 <x:forEach>

循环 XML 文档中的节点。

6 <x:选择>

简单的条件标签,为互斥条件操作建立上下文,由<when><otherwise>标签标记。

7 <x:当>

<choose>的子标签,如果其表达式求值为“true”,则包含其正文。

8 <x:否则>

<choose>的子标签位于<when>标签之后,仅当所有先验条件计算结果为“false”时才运行。

9 <x:变换>

对 XML 文档应用 XSL 转换

10 <x:参数>

转换标签一起使用以在 XSLT 样式表中设置参数

JSTL 函数

JSTL 包含许多标准函数,其中大部分是常见的字符串操作函数。以下是在 JSP 中包含 JSTL 函数库的语法 -

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

下表列出了各种 JSTL 函数 -

编号 功能说明
1 fn:包含()

测试输入字符串是否包含指定的子字符串。

2 fn:包含IgnoreCase()

测试输入字符串是否以不区分大小写的方式包含指定的子字符串。

3 fn:endsWith()

测试输入字符串是否以指定后缀结尾。

4 fn:escapeXml()

对可解释为 XML 标记的字符进行转义。

5 fn:indexOf()

返回指定子字符串第一次出现的字符串索引。

6 fn:加入()

将数组的所有元素连接成一个字符串。

7 fn:长度()

返回集合中的项目数或字符串中的字符数。

8 fn:替换()

返回一个字符串,该字符串是将输入字符串中所有出现的地方替换为给定字符串而得到的。

9 fn:分割()

将字符串拆分为子字符串数组。

10 fn:startsWith()

测试输入字符串是否以指定前缀开头。

11 fn:子串()

返回字符串的子集。

12 fn:substringAfter()

返回特定子字符串后面的字符串的子集。

13 fn:substringBefore()

返回特定子字符串之前的字符串子集。

14 fn:toLowerCase()

将字符串的所有字符转换为小写。

15 fn:toUpperCase()

将字符串的所有字符转换为大写。

16 fn:修剪()

删除字符串两端的空格。