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



本章我们将学习JSP中的不同标签。JavaServer Pages Standard Tag Library (JSTL) 是一个包含许多JSP应用程序常用核心功能的有用JSP标签集合。

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

安装 JSTL 库

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

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

步骤 2 - 要从其Jakarta Taglibs 发行版使用 Standard Taglib,只需将发行版 'lib' 目录中的JAR文件复制到应用程序的webapps\ROOT\WEB-INF\lib目录。

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

JSTL 标签分类

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

  • 核心标签

  • 格式化标签

  • SQL 标签

  • XML 标签

  • JSTL 函数

核心标签

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

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

下表列出了核心JSTL标签:

序号 标签 & 描述
1 <c:out>

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

2 <c:set >

'scope'中设置表达式计算的结果。

3 <c:remove >

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

4 <c:catch>

捕获其主体中发生的任何Throwable,并可选地公开它。

5 <c:if>

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

6 <c:choose>

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

7 <c:when>

<choose>的子标签,如果其条件计算结果为'true',则包含其主体。

8 <c:otherwise >

<choose>的子标签,位于<when>标签之后,只有在所有先前条件计算结果都为'false'时才运行。

9 <c:import>

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

10 <c:forEach >

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

11 <c:forTokens>

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

12 <c:param>

向包含'import'标签的URL添加参数。

13 <c:redirect >

重定向到新的URL。

14 <c:url>

创建具有可选查询参数的URL。

格式化标签

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

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

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

序号 标签 & 描述
1 <fmt:formatNumber>

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

2 <fmt:parseNumber>

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

3 <fmt:formatDate>

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

4 <fmt:parseDate>

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

5 <fmt:bundle>

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

6 <fmt:setLocale>

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

7 <fmt:setBundle>

加载资源包并将其存储在命名的作用域变量或包配置变量中。

8 <fmt:timeZone>

指定其主体中任何时间格式化或解析操作的时区。

9 <fmt:setTimeZone>

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

10 <fmt:message>

显示国际化消息。

11 <fmt:requestEncoding>

设置请求字符编码。

SQL 标签

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

以下是将JSTL SQL库包含在您的JSP中的语法:

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

下表列出了SQL JSTL标签:

序号 标签 & 描述
1 <sql:setDataSource>

创建一个仅适用于原型设计的简单DataSource。

2 <sql:query>

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

3 <sql:update>

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

4 <sql:param>

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

5 <sql:dateParam>

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

6 <sql:transaction >

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

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安装目录>\lib

以下是XML JSTL标签列表:

序号 标签 & 描述
1 <x:out>

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

2 <x:parse>

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

3 <x:set >

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

4 <x:if >

计算测试XPath表达式,如果为真,则处理其主体。如果测试条件为假,则忽略主体。

5 <x:forEach>

循环遍历XML文档中的节点。

6 <x:choose>

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

7 <x:when >

<choose>的子标签,如果其表达式计算结果为'true',则包含其主体。

8 <x:otherwise >

<choose>的子标签,位于<when>标签之后,只有在所有先前条件计算结果都为'false'时才运行。

9 <x:transform >

对XML文档应用XSL转换。

10 <x:param >

transform标签一起使用,以在XSLT样式表中设置参数。

JSTL 函数

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

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

下表列出了各种JSTL函数:

序号 函数 & 描述
1 fn:contains()

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

2 fn:containsIgnoreCase()

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

3 fn:endsWith()

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

4 fn:escapeXml()

转义可以解释为XML标记的字符。

5 fn:indexOf()

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

6 fn:join()

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

7 fn:length()

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

8 fn:replace()

返回一个字符串,该字符串的结果是替换输入字符串中所有出现的给定字符串。

9 fn:split()

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

10 fn:startsWith()

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

11 fn:substring()

返回字符串的子集。

12 fn:substringAfter()

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

13 fn:substringBefore()

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

14 fn:toLowerCase()

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

15 fn:toUpperCase()

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

16 fn:trim()

删除字符串两端的白空格。

广告