Jstl教程

在本章中,我们将了解JSP中的不同标签。JSP标准标签库(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目录中即可。

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

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

JSTL标签的分类

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

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

1. 核心标签

核心组标签是最常用的JSTL标签。 以下是在JSP中包含JSTL Core库的声明(导入)语法 -

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

下表列出了核心JSTL标签使用示例 -

编号 标签 描述
1 <c:out 类似<%= ...>,但仅对于表达式使用。
2 <c:set 在“范围”中设置表达式求值的结果
3 <c:remove 删除范围变量(从指定的特定范围中)。
4 <c:catch 捕捉发生在其主体中的任何可抛出对象,并可选地暴露它。
5 <c:if 简单的条件标签,如果提供的条件为真,则对其主体进行评估。
6 <c:choose 简单的条件标签,用于建立互斥条件操作的上下文,标记为<when><otherwise>
7 <c:when 如果条件评估为true,则包含<choose>的子标签。
8 <c:otherwise <when>标签之后的<choose>子标签,只有当所有先前条件都被评估为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

2. 格式化标签

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 在locale配置变量中存储给定的区域设置。
7 <fmt:setBundle 加载资源包并将其存储在命名作用域变量或包配置变量中。
8 <fmt:timeZone 指定嵌套在其正文中的任何时间格式化或解析操作的时区。
9 <fmt:setTimeZone 在时区配置变量中存储给定的时区
10 <fmt:message 显示国际化消息。
11 <fmt:requestEncoding 设置请求字符编码

3. SQL标签

JSTL SQL标签库提供与关系数据库(RDBMS)进行交互的标记,如:Oracle,MySQL或Microsoft SQL Server。

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

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

下表列出了JSTL的SQL标签 -

编号 标签 描述
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 提供了一个共享的连接,设置为执行所有语句作为一个事务嵌套数据库动作要素。

4. XML标签

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

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表达式,如果结果为true,它处理其主体。如果测试条件为false,则主体被忽略。
5 <x:forEach 循环XML文档中的节点。
6 <x:choose 简单的条件标签,用于为相互排斥的条件操作建立上下文,由<when><otherwise>标签标记。
7 <x:when 如果<select>的表达式计算为true,则包含其主体的子标签。
8 <x:otherwise 只有当所有先前的条件评估为true时,<choose>标签才能跟随<when>标签。
9 <x:transform 在XML文档上应用XSL转换
10 <x:param 与变形标签一起使用,以在XSLT样式表中设置参数

5. JSTL函数

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

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

下表列出了各种JSTL函数 -

编号 标签 描述
1 fn:contains() 测试输入字符串是否包含指定的子字符串。
2 fn:containsIgnoreCase() 测试输入字符串是否以不区分大小写的方式包含指定的子字符串。
3 fn:escapeXml() 转义可解释为XML标记的字符。
4 fn:indexOf() 返回指定子字符串第一次出现在字符串中的索引。
5 fn:endsWith() 测试输入字符串是否以指定的后缀结尾。
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() 从字符串的两端删除空格。