- JSP基础教程
- JSP - 首页
- JSP - 概述
- JSP - 环境设置
- JSP - 架构
- JSP - 生命周期
- JSP - 语法
- JSP - 指令
- JSP - 动作
- JSP - 隐式对象
- JSP - 客户端请求
- JSP - 服务器响应
- JSP - HTTP 状态码
- JSP - 表单处理
- JSP - 编写过滤器
- JSP - Cookie 处理
- JSP - 会话跟踪
- JSP - 文件上传
- JSP - 日期处理
- JSP - 页面重定向
- JSP - 点击计数器
- JSP - 自动刷新
- JSP - 发送邮件
- 高级 JSP 教程
- JSP - 标准标签库
- JSP - 数据库访问
- JSP - XML 数据
- JSP - Java Bean
- JSP - 自定义标签
- JSP - 表达式语言
- JSP - 异常处理
- JSP - 调试
- JSP - 安全性
- JSP - 国际化
- JSP 有用资源
- JSP - 常见问题解答
- JSP - 快速指南
- JSP - 有用资源
- JSP - 讨论
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、mySQL或Microsoft 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:
XercesImpl.jar - 从 https://apache.org/dist/xerces/j/ 下载
xalan.jar - 从 https://xml.apache.org/xalan-j/index.html 下载
以下是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()
删除字符串两端的白空格。 |