JSP 标准标记库(JSTL)
-
JSTL
在本章中,我们将了解JSP中的不同标记。JavaServer Pages标准标记库(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标记分类为以下JSTL标记库组,这些组可在创建JSP页面时使用-- 核心标签
- 格式化标签
- SQL标签
- XML标签
- JSTL函数
-
核心标签
标签的核心组是最常用的JSTL标签。以下是在JSP中包含JSTL Core库的语法-<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
下表列出了核心JSTL标签-标签 描述 <c:out> 类似于<%= ...>,但用于表达式。 <c:set > 在“作用域”中设置表达式求值的结果 <c:remove > 删除范围变量(如果指定,则从特定范围删除)。 <c:catch> 捕获其体内发生的任何Throwable并有选择地将其暴露。 <c:if> 简单的条件标签,如果提供的条件为true,则评估其主体。 <c:choose> 简单的条件标记,它为互斥的条件操作建立上下文,用<when>和<otherwise>标记。 <c:when> <choose>的子标签,如果其条件评估为'true',则包括其主体。 <c:otherwise > 紧随<when>标记的<choose>子标记,并且仅在所有先前条件评估为'false'时运行。 <c:import> 检索绝对或相对URL,并将其内容公开到页面,“ var”中的String或“ varReader”中的Reader。 <c:forEach > 基本的迭代标签,接受许多不同的集合类型并支持子集和其他功能。 <c:forTokens> 遍历令牌,由提供的分隔符分隔。 <c:param> 向包含“ import”标签的URL添加参数。 <c:redirect > 重定向到新的URL。 <c:url> 创建带有可选查询参数的URL。 -
格式化标签
JSTL格式标记用于格式化和显示国际化网站的文本,日期,时间和数字。以下是在JSP中包括Formatting库的语法-<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>
下表列出了格式化JSTL标签-标签 描述 <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标记库提供用于与关系数据库(RDBMS)(例如Oracle,mySQL或Microsoft SQL Server)进行交互的标记。以下是在JSP中包含JSTL SQL库的语法--<%@ taglib prefix = "sql" uri = "http://java.sun.com/jsp/jstl/sql" %>
下表列出了SQL JSTL标签-标签 描述 <sql:setDataSource> 创建一个仅适用于原型的简单数据源。 <sql:query> 执行在其主体中或通过sql属性定义的SQL查询。 <sql:update> 执行在其主体中或通过sql属性定义的SQL更新。 <sql:param> 将SQL语句中的参数设置为指定值。 <sql:dateParam> 将SQL语句中的参数设置为指定的java.util.Date值。 <sql:transaction > 为嵌套的数据库操作元素提供共享的Connection,并设置为将所有语句作为一个事务执行 -
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中 -- XercesImpl.jar -从https://www.apache.org/dist/xerces/j/下载
- xalan.jar -从https://xml.apache.org/xalan-j/index.html下载
以下是XML JSTL标签的列表-标签 描述 <x:out> 类似于<%= ...>,但用于XPath表达式。 <x:parse> 用于解析通过属性或在标记主体中指定的XML数据。 <x:set > 将变量设置为XPath表达式的值。 <x:if > 评估测试XPath表达式,如果该表达式为true,则处理其主体。 如果测试条件为假,则忽略主体。 <x:forEach> 循环遍历XML文档中的节点。 <x:choose> 简单的条件标签,为互斥条件操作建立上下文,用<when>和<otherwise>标签标记。 <x:when > <choose>的子标记,如果表达式的表达式评估为'true',则包括其主体。 <x:otherwise > 紧随<when>标记的<choose>子标记,并且仅在所有先前条件评估为'false'时运行。 <x:transform > 在XML文档上应用XSL转换。 <x:param > 与transform标记一起使用,以在XSLT样式表中设置参数。 -
JSTL函数
JSTL包含许多标准函数,其中大多数是常见的字符串操作函数。以下是在JSP中包含JSTL Functions库的语法-<%@ 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() 删除字符串两端的空格。