文前说明
作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。
本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。
JSP 标准标签库(JSTL)是一个 JSP 标签集合,它封装了 JSP 应用的通用核心功能。JSTL 支持通用的、结构化的任务,比如迭代,条件判断。
根据 JSTL 标签所提供的功能,可以分为 5 个类别。
- 核心标签
- 格式化标签
- SQL 标签
- XML 标签
- JSTL 函数
JSTL 库安装
<dependency>
<groupId>org.jboss.spec.javax.servlet.jstl</groupId>
<artifactId>jboss-jstl-api_1.2_spec</artifactId>
<version>${javax.jstl.api.version}</version>
<scope>provided</scope>
</dependency>
- 也可以从 Apache 的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。
核心标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
标签 |
描述 |
<c:out> |
用于在 JSP 中显示数据,就像 <%= ... > |
<c:set> |
用于保存数据 |
<c:remove> |
用于删除数据 |
<c:catch> |
用来处理产生错误的异常状况,并且将错误信息储存起来 |
<c:if> |
与我们在一般程序中用的 if 一样 |
<c:choose> |
本身只当做 <c:when> 和 <c:otherwise> 的父标签 |
<c:when> |
<c:choose> 的子标签,用来判断条件是否成立 |
<c:otherwise> |
<c:choose> 的子标签,接在 <c:when> 标签后,当 <c:when> 标签判断为 false 时被执行 |
<c:import> |
检索一个绝对或相对 URL,然后将其内容暴露给页面 |
<c:forEach> |
基础迭代标签,接受多种集合类型 |
<c:forTokens> |
根据指定的分隔符来分隔内容并迭代输出 |
<c:param> |
用来给包含或重定向的页面传递参数 |
<c:redirect> |
重定向至一个新的 URL |
<c:url> |
使用可选的查询参数来创造一个 URL |
<c:out> 标签
- 标签用来显示一个表达式的结果,与 <%= %> 作用相似,它们的区别就是 <c:out> 标签可以直接通过 "." 操作符来访问属性。
- 标签会自动忽略 XML 标记字符,所以它们不会被当做标签来处理。
<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
要输出的内容 |
是 |
无 |
default |
输出的默认值 |
否 |
主体中的内容 |
escapeXml |
是否忽略 XML 特殊字符 |
否 |
true |
<c:set> 标签
- 标签用于设置变量值和对象属性。
- 与 <jsp:setProperty> 行为标签效果一致。
- 标签可以计算表达式的值。
<c:set var="<string>" value="<string>" target="<string>" property="<string>" scope="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
要存储的值 |
否 |
主体的内容 |
target |
要修改的属性所属的对象 |
否 |
无 |
property |
要修改的属性 |
否 |
无 |
var |
存储信息的变量 |
否 |
无 |
scope |
var 属性的作用域 |
否 |
Page |
<c:remove> 标签
- 标签用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。
- 可以用来确保 JSP 完成清理工作。
<c:remove var="<string>" scope="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
var |
要移除的变量名称 |
是 |
无 |
scope |
变量所属的作用域 |
否 |
所有作用域 |
<c:catch> 标签
- 标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。
<c:catch var="<string>">
...
</c:catch>
属性 |
描述 |
是否必要 |
默认值 |
var |
用来储存错误信息的变量 |
否 |
None |
<c:if> 标签
- 标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。
<c:if test="<boolean>" var="<string>" scope="<string>">
...
</c:if>
属性 |
描述 |
是否必要 |
默认值 |
test |
条件 |
是 |
无 |
var |
用于存储条件结果的变量 |
否 |
无 |
scope |
var 属性的作用域 |
否 |
page |
<c:choose>, <c:when>, <c:otherwise> 标签
- <c:choose>标签与 Java switch 语句的功能一样,用于在众多选项中做出选择。
- switch 语句中有 case,而 <c:choose> 标签中对应有 <c:when>,switch 语句中有 default,而 <c:choose> 标签中有 <c:otherwise>。
- <c:choose> 标签和 <c:otherwise> 标签没有属性。
<c:choose>
<c:when test="<boolean>">
...
</c:when>
<c:when test="<boolean>">
...
</c:when>
...
...
<c:otherwise>
...
</c:otherwise>
</c:choose>
c:when 属性 |
描述 |
是否必要 |
默认值 |
test |
条件 |
是 |
无 |
<c:import> 标签
- 标签提供了所有 <jsp:include> 行为标签所具有的功能,同时也允许包含绝对 URL。
<c:import
url="<string>"
var="<string>"
scope="<string>"
varRender="<string>"
context="<string>"
charEncoding="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
url |
待导入资源的 URL,可以是相对路径和绝对路径,并且可以导入其他主机资源 |
是 |
无 |
context |
当使用相对路径访问外部 context 资源时,context 指定了这个资源的名字。 |
否 |
当前应用程序 |
charEncoding |
所引入的数据的字符编码集 |
否 |
ISO-8859-1 |
var |
用于存储所引入的文本的变量 |
否 |
无 |
scope |
var 属性的作用域 |
否 |
page |
varReader |
可选的用于提供 java.io.Reader 对象的变量 |
否 |
无 |
<c:forEach> 标签
<c:forEach
items="<object>"
begin="<int>"
end="<int>"
step="<int>"
var="<string>"
varStatus="<string>">
...
属性 |
描述 |
是否必要 |
默认值 |
items |
要被循环的信息 |
否 |
无 |
begin |
开始的元素(0=第一个元素,1=第二个元素) |
否 |
0 |
end |
最后一个元素(0=第一个元素,1=第二个元素) |
否 |
Last element |
step |
每一次迭代的步长 |
否 |
1 |
var |
代表当前条目的变量名称 |
否 |
无 |
varStatus |
代表循环状态的变量名称 |
否 |
无 |
<c:forTokens> 标签
- 标签通过指定分隔符将字符串分隔为一个数组然后进行迭代。
<c:forTokens
items="<string>"
delims="<string>"
begin="<int>"
end="<int>"
step="<int>"
var="<string>"
varStatus="<string>">
属性 |
描述 |
是否必要 |
默认值 |
items |
要被循环的信息 |
否 |
无 |
begin |
开始的元素(0=第一个元素,1=第二个元素) |
否 |
0 |
end |
最后一个元素(0=第一个元素,1=第二个元素) |
否 |
Last element |
step |
每一次迭代的步长 |
否 |
1 |
var |
代表当前条目的变量名称 |
否 |
无 |
varStatus |
代表循环状态的变量名称 |
否 |
无 |
delims |
分隔符 |
是 |
无 |
<c:param> 标签
- 标签用于在 <c:url> 标签中指定参数,而且与URL编码相关。
- 标签内,name 属性表明参数的名称,value 属性表明参数的值。
<c:param name="<string>" value="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
name |
URL 中要设置的参数的名称 |
是 |
无 |
value |
参数的值 |
否 |
Body |
<c:redirect> 标签
- 标签通过自动重写 URL 来将浏览器重定向至一个新的 URL,它提供内容相关的 URL,并且支持 c:param 标签。
<c:redirect url="<string>" context="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
url |
目标 URL |
是 |
无 |
context |
紧接着一个本地网络应用程序的名称 |
否 |
当前应用程序 |
<c:url> 标签
- 标签将 URL 格式化为一个字符串,然后存储在一个变量中。这个标签在需要的时候会自动重写 URL。
- var 属性用于存储格式化后的 URL。
- 标签只是用于调用 response.encodeURL() 方法的一种可选的方法。它真正的优势在于提供了合适的 URL编码,包括 <c:param> 中指定的参数。
<c:url
var="<string>"
scope="<string>"
value="<string>"
context="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
基础 URL |
是 |
无 |
context |
本地网络应用程序的名称 |
否 |
当前应用程序 |
var |
代表 URL 的变量名 |
否 |
Print to page |
scope |
var 属性的作用域 |
否 |
Page |
格式化标签
- 格式化标签用来格式化并输出文本、日期、时间、数字。
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
标签 |
描述 |
<fmt:formatNumber> |
使用指定的格式或精度格式化数字 |
<fmt:parseNumber> |
解析一个代表着数字,货币或百分比的字符串 |
<fmt:formatDate> |
使用指定的风格或模式格式化日期和时间 |
<fmt:parseDate> |
解析一个代表着日期或时间的字符串 |
<fmt:bundle> |
绑定资源 |
<fmt:setLocale> |
指定地区 |
<fmt:setBundle> |
绑定资源 |
<fmt:timeZone> |
指定时区 |
<fmt:setTimeZone> |
指定时区 |
<fmt:message> |
显示资源配置文件信息 |
<fmt:requestEncoding> |
设置 request 的字符编码 |
<fmt:formatNumber> 标签
<fmt:formatNumber
value="<string>"
type="<string>"
pattern="<string>"
currencyCode="<string>"
currencySymbol="<string>"
groupingUsed="<string>"
maxIntegerDigits="<string>"
minIntegerDigits="<string>"
maxFractionDigits="<string>"
minFractionDigits="<string>"
var="<string>"
scope="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
要显示的数字 |
是 |
无 |
type |
NUMBER,CURRENCY,或 PERCENT 类型 |
否 |
Number |
pattern |
指定一个自定义的格式化模式用与输出 |
否 |
无 |
currencyCode |
货币码(当 type= "currency" 时) |
否 |
取决于默认区域 |
currencySymbol |
货币符号 (当 type= "currency" 时) |
否 |
取决于默认区域 |
groupingUsed |
是否对数字分组 (TRUE 或 FALSE) |
否 |
true |
maxIntegerDigits |
整型数最大的位数 |
否 |
无 |
minIntegerDigits |
整型数最小的位数 |
否 |
无 |
maxFractionDigits |
小数点后最大的位数 |
否 |
无 |
minFractionDigits |
小数点后最小的位数 |
否 |
无 |
var |
存储格式化数字的变量 |
否 |
Print to page |
scope |
var 属性的作用域 |
否 |
page |
符号 |
描述 |
0 |
代表一位数字 |
E |
使用指数格式 |
# |
代表一位数字,若没有则显示 0,前导 0 和追尾 0 不显示。 |
. |
小数点 |
, |
数字分组分隔符 |
; |
分隔格式 |
- |
使用默认负数前缀 |
% |
百分数 |
? |
千分数 |
¤ |
货币符号,使用实际的货币符号代替 |
X |
指定可以作为前缀或后缀的字符 |
' |
在前缀或后缀中引用特殊字符 |
<fmt:parseNumber> 标签
- 标签用来解析数字,百分数,货币。
- pattern 属性与 <fmt:formatNumber> 标签中的 pattern 有相同的作用。在解析时,pattern 属性告诉解析器期望的格式。
<fmt:parseNumber
value="<string>"
type="<string>"
pattern="<string>"
parseLocale="<string>"
integerOnly="<string>"
var="<string>"
scope="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
要解析的数字 |
否 |
Body |
type |
NUMBER,CURRENCY,或 PERCENT |
否 |
number |
parseLocale |
解析数字时所用的区域 |
否 |
默认区域 |
integerOnly |
是否只解析整型数(true)或浮点数(false) |
否 |
false |
pattern |
自定义解析模式 |
否 |
无 |
timeZone |
要显示的日期的时区 |
否 |
默认时区 |
var |
存储待解析数字的变量 |
否 |
Print to page |
scope |
var 属性的作用域 |
否 |
page |
<fmt:formatDate> 标签
<fmt:formatDate
value="<string>"
type="<string>"
dateStyle="<string>"
timeStyle="<string>"
pattern="<string>"
timeZone="<string>"
var="<string>"
scope="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
要显示的日期 |
是 |
无 |
type |
DATE, TIME, 或 BOTH |
否 |
date |
dateStyle |
FULL, LONG, MEDIUM, SHORT, 或 DEFAULT |
否 |
default |
timeStyle |
FULL, LONG, MEDIUM, SHORT, 或 DEFAULT |
否 |
default |
pattern |
自定义格式模式 |
否 |
无 |
timeZone |
显示日期的时区 |
否 |
默认时区 |
var |
存储格式化日期的变量名 |
否 |
显示在页面 |
scope |
存储格式化日志变量的范围 |
否 |
页面 |
代码 |
描述 |
实例 |
G |
时代标志 |
AD |
y |
不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。 |
2002 |
M |
月份数字。一位数的月份没有前导零。 |
April & 04 |
d |
月中的某一天。一位数的日期没有前导零。 |
20 |
h |
12 小时制的小时。一位数的小时数没有前导零。 |
12 |
H |
24 小时制的小时。一位数的小时数没有前导零。 |
0 |
m |
分钟。一位数的分钟数没有前导零。 |
45 |
s |
秒。一位数的秒数没有前导零。 |
52 |
S |
毫秒 |
970 |
E |
周几 |
Tuesday |
D |
一年中的第几天 |
180 |
F |
一个月中的第几个周几 |
2 (一个月中的第二个星期三) |
w |
一年中的第几周 |
27 |
W |
一个月中的第几周 |
2 |
a |
a.m./p.m. 指示符 |
PM |
k |
小时(12 小时制的小时) |
24 |
K |
小时(24 小时制的小时) |
0 |
z |
时区 |
中部标准时间 |
' |
|
转义文本 |
'' |
|
单引号 |
<fmt:parseDate> 标签
<fmt:parseDate
value="<string>"
type="<string>"
dateStyle="<string>"
timeStyle="<string>"
pattern="<string>"
timeZone="<string>"
parseLocale="<string>"
var="<string>"
scope="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
要显示的日期 |
是 |
无 |
type |
DATE, TIME, 或 BOTH |
否 |
date |
dateStyle |
FULL, LONG, MEDIUM, SHORT, 或 DEFAULT |
否 |
default |
timeStyle |
FULL, LONG, MEDIUM, SHORT, 或 DEFAULT |
否 |
default |
pattern |
自定义格式模式 |
否 |
无 |
timeZone |
显示日期的时区 |
否 |
默认时区 |
var |
存储格式化日期的变量名 |
否 |
显示在页面 |
scope |
存储格式化日志变量的范围 |
否 |
页面 |
<fmt:bundle> 标签
- 标签将指定的资源束对出现在 <fmt:bundle> 标签中的 <fmt:message> 标签可用。这可以使得省去为每个 <fmt:message> 标签指定资源束的很多步骤。
<fmt:bundle baseName="<string>" prefix="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
basename |
指定被载入的资源束的基础名称 |
是 |
无 |
prefix |
指定 <fmt:message> 标签 key 属性的前缀 |
否 |
无 |
<fmt:timeZone> 标签
<fmt:setLocale value="<string>" variant="<string>" scope="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
时区 |
是 |
无 |
<fmt:setTimeZone> 标签
<fmt:setTimeZone value="<string>" var="<string>" scope="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
时区 |
是 |
无 |
var |
存储新时区的变量名 |
否 |
Replace default |
scope |
变量的作用域 |
否 |
Page |
<fmt:message> 标签
<fmt:message
key="<string>"
bundle="<string>"
var="<string>"
scope="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
key |
要检索的消息关键字 |
否 |
Body |
bundle |
要使用的资源束 |
否 |
默认资源束 |
var |
存储局部消息的变量名 |
否 |
Print to page |
scope |
var属性的作用域 |
否 |
Page |
<fmt:requestEncoding> 标签
- 标签用来指定返回给 Web 应用程序的表单编码类型。
<fmt:requestEncoding value="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
key |
字符编码集的名称,用于解码 request 参数 |
是 |
无 |
-
使用 <fmt:requestEncoding> 标签来指定字符集,用于解码来自表单的数据。在字符集不是ISO-8859-1 时必须使用这个标签。由于大多数浏览器在请求中不包含 Content-Type 头,所以需要这个标签。
-
<fmt:requestEncoding> 标签的目的就是用来指定请求的 Content-Type。必须指定一个Content-Type,就算 response 是通过 Page 指令的 contentType 属性来编码。这是因为response 的实际区域可能与 Page 指令所指定的不同。
-
如果页面包含 I18N-capable 格式行为用于设置 response 的 locale 属性(通过调用ServletResponse.setLocale() 方法),任何在页面中指定的编码集将会被覆盖。
JSTL 函数
- JSTL 包含一系列标准函数,大部分是通用的字符串处理函数。
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
函数 |
描述 |
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() |
移除首位的空白符 |
fn:contains() 函数
<c:if test="${fn:contains(<原始字符串>, <要查找的子字符串>)}">
...
</c:if>
fn:containsIgnoreCase() 函数
- 用于确定一个字符串是否包含指定的子串,忽略大小写。
<c:if test="${fn:containsIgnoreCase(<原始字符串>, <要查找的子字符串>)}">
...
</c:if>
fn:endsWith() 函数
<c:if test="${fn:endsWith(<原始字符串>, <要查找的子字符串>)}">
...
</c:if>
fn:escapeXml() 函数
${fn:escapeXml(<要转义标记的文本>)}
fn:indexOf() 函数
${fn:indexOf(<原始字符串>,<子字符串>)}
fn:join() 函数
- 将一个数组中的所有元素使用指定的分隔符来连接成一个字符串。
${fn:join([数组], <分隔符>)}
fn:length() 函数
${fn:length(collection | string)}
fn:replace() 函数
${fn:replace(<原始字符串>, <被替换的字符串>, <要替换的字符串>)}
fn:split() 函数
${fn:split(<带分隔符的字符串>, <分隔符>)}
fn:startsWith() 函数
<c:if test="${fn:startsWith(<原始字符串>, <搜索的前缀>)}">
...
</c:if>
fn:substring() 函数
${fn:substring(<string>, <beginIndex>, <endIndex>)}
fn:substringAfter() 函数
${fn:substringAfter(<string>, <substring>)}
fn:substringBefore() 函数
${fn:substringBefore(<string>, <substring>)}
fn:toLowerCase() 函数
${fn.toLowerCase(<string>)}
fn:toUpperCase() 函数
${fn.toUpperCase(<string>)}
fn:trim() 函数
${fn.trim(<string>)}
SQL 标签
- JSTL SQL 标签库提供了与关系型数据库(Oracle,MySQL,SQL Server 等等)进行交互的标签。
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
标签 |
描述 |
<sql:setDataSource> |
指定数据源 |
<sql:query> |
运行 SQL 查询语句 |
<sql:update> |
运行 SQL 更新语句 |
<sql:param> |
将 SQL 语句中的参数设为指定值 |
<sql:dateParam> |
将 SQL 语句中的日期参数设为指定的 java.util.Date 对象值 |
<sql:transaction> |
在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行 |
<sql:setDataSource> 标签
- 标签用来配置数据源或者将数据源信息存储在某作用域的变量中,用来作为其它 JSTL 数据库操作的数据源。
<sql:setDataSource
var="<string>"
scope="<string>"
dataSource="<string>"
driver="<string>"
url="<string>"
user="<string>"
password="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
driver |
要注册的 JDBC 驱动 |
否 |
无 |
url |
数据库连接的 JDBC URL |
否 |
无 |
user |
数据库用户名 |
否 |
无 |
password |
数据库密码 |
否 |
无 |
dataSource |
事先准备好的数据库 |
否 |
无 |
var |
代表数据库的变量 |
否 |
默认设置 |
scope |
var 属性的作用域 |
否 |
Page |
<sql:query> 标签
- 标签用来运行 SQL SELECT 语句,还有就是将结果存储在作用域变量中。
<sql:query
var="<string>"
scope="<string>"
sql="<string>"
dataSource="<string>"
startRow="<string>"
maxRows="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
sql |
需要执行的 SQL 命令(返回一个 ResultSet 对象) |
否 |
Body |
dataSource |
所使用的数据库连接(覆盖默认值) |
否 |
默认数据库 |
maxRows |
存储在变量中的最大结果数 |
否 |
无穷大 |
startRow |
开始记录的结果的行数 |
否 |
0 |
var |
代表数据库的变量 |
否 |
默认设置 |
scope |
var 属性的作用域 |
否 |
Page |
<sql:update> 标签
- 标签用来执行一个没有返回值的 SQL 语句,比如 SQL INSERT,UPDATE,DELETE 语句。
<sql:update var="<string>" scope="<string>" sql="<string>" dataSource="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
sql |
需要执行的 SQL 命令(不返回 ResultSet 对象) |
否 |
Body |
dataSource |
所使用的数据库连接(覆盖默认值) |
否 |
默认数据库 |
var |
用来存储所影响行数的变量 |
否 |
无 |
scope |
var 属性的作用域 |
否 |
Page |
<sql:param> 标签
- <sql:param> 标签与 <sql:query> 标签和 <sql:update> 标签嵌套使用,用来提供一个值占位符。如果是一个 null 值,则将占位符设为 SQL NULL。
<sql:param value="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
需要设置的参数值 |
否 |
Body |
<sql:dateParam> 标签
- <sql:dateParam> 标签与 <sql:query> 标签和 <sql:update> 标签嵌套使用,用来提供日期和时间的占位符。如果是一个 null 值,则将占位符设为 SQL NULL。
<sql:dateParam value="<string>" type="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
需要设置的日期参数(java.util.Date) |
否 |
Body |
type |
DATE(只有日期),TIME(只有时间), TIMESTAMP(日期和时间) |
否 |
TIMESTAMP |
<sql:transaction> 标签
- <sql:transaction> 标签用来将 <sql:query> 标签和 <sql:update> 标签封装至事务中。可以将大量的 <sql:query> 和 <sql:update> 操作装入<sql:transaction> 中,使它们成为单一的事务。
- 确保对数据库的修改不是被提交就是被回滚。
<sql:transaction dataSource="<string>" isolation="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
dataSource |
所使用的数据库(覆盖默认值) |
否 |
默认数据库 |
isolation |
事务隔离等级 (READ_COMMITTED,READ_UNCOMMITTED, REPEATABLE_READ 或 SERIALIZABLE) |
否 |
数据库默认 |
XML 标签
- JSTL XML 标签库提供了创建和操作 XML 文档的标签。
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
- 使用 xml 标签前,需要 XML 和 XPath 的相关包。
标签 |
描述 |
<x:out> |
与 <%= ... > 类似,不过只用于 XPath 表达式 |
<x:parse> |
解析 XML 数据 |
<x:set> |
设置 XPath 表达式 |
<x:if> |
判断 XPath 表达式,若为真,则执行本体中的内容,否则跳过本体 |
<x:forEach> |
迭代 XML 文档中的节点 |
<x:choose> |
<x:when> 和 <x:otherwise> 的父标签 |
<x:when> |
<x:choose> 的子标签,用来进行条件判断 |
<x:otherwise> |
<x:choose> 的子标签,当 <x:when> 判断为 false 时被执行 |
<x:transform> |
将 XSL 转换应用在 XML 文档中 |
<x:param> |
与 <x:transform> 共同使用,用于设置 XSL 样式表 |
<x:out> 标签
- 显示 XPath 表达式的结果,与 <%= %> 功能相似。
<x:out select="<string>" escapeXml="<true|false>"/>
属性 |
描述 |
是否必要 |
默认值 |
select |
需要计算的 XPath 表达式,通常使用 XPath 变量 |
是 |
无 |
escapeXml |
是否忽略 XML 特殊字符 |
否 |
true |
<x:parse> 标签
<x:parse
var="<string>"
varDom="<string>"
scope="<string>"
scopeDom="<string>"
doc="<string>"
systemId="<string>"
filter="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
var |
包含已解析 XML 数据的变量 |
否 |
无 |
xml |
需要解析的文档的文本内容(String 或 Reader) |
否 |
Body |
systemId |
系统标识符 URI,用来解析文档 |
否 |
无 |
filter |
应用于源文档的过滤器 |
否 |
无 |
doc |
需要解析的 XML 文档 |
否 |
Page |
scope |
var 属性的作用域 |
否 |
Page |
varDom |
包含已解析 XML 数据的变量 |
否 |
Page |
scopeDom |
varDom 属性的作用域 |
否 |
Page |
<x:set> 标签
- <x:set> 标签为 XPath 表达式的值设置一个变量。
- 如果 XPath 表达式的值是 boolean 类型,则 <x:set> 将会设置一个 java.lang.Boolean 对象,若是字符串,则设置一个 java.lang.String 对象,若是数字,则设置一个 java.lang.Number 对象。
<x:set var="<string>" select="<string>" scope="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
var |
代表 XPath 表达式值得变量 |
是 |
Body |
select |
需要计算的 XPath 表达式 |
否 |
无 |
scope |
var 属性的作用域 |
否 |
Page |
<x:if> 标签
- 用于判断一个 XPath 表达式的值,若为真,则执行其主体中的内容,若为假则其主体的内容将会被忽略。
<x:if
select="<string>"
var="<string>"
scope="<string>">
...
</x:if>
属性 |
描述 |
是否必要 |
默认值 |
select |
需要计算的 XPath 表达式 |
是 |
无 |
var |
存储条件结果的变量 |
否 |
无 |
scope |
var 属性的作用域 |
否 |
Page |
<x:forEach> 标签
<x:forEach
var="<string>"
select="<string>"
begin="<int>"
end="<int>"
step="<int>"
varStatus="<string>">
属性 |
描述 |
是否必要 |
默认值 |
select |
需要计算的 XPath 表达式 |
是 |
无 |
var |
用于存储当前项目的变量 |
否 |
无 |
begin |
迭代器的开始索引 |
否 |
无 |
end |
迭代器的结束索引 |
否 |
无 |
step |
迭代的步长 |
否 |
无 |
varStatus |
代表迭代器所存储的状态的变量 |
否 |
无 |
<x:choose>, <x:when>, <x:otherwise> 标签
- <x:choose> 标签与 Java switch 语句有相同的功能。switch 语句有 case 语句,而<x:choose> 标签有 <x:when> 标签。switch 语句有 default 语句,而 <x:choose> 标签有<x:otherwise> 标签。
- <x:choose> 没有属性。
- <x:otherwise> 没有属性。
<x:choose>
<x:when select="<string>">
...
</x:when>
<x:when select="<string>">
...
</x:when>
...
...
<x:otherwise>
...
</x:otherwise>
</x:choose>
x:when 属性 |
描述 |
是否必要 |
默认值 |
select |
条件 |
是 |
无 |
<x:transform> 标签
<x:transform
var="<string>"
scope="<string>"
result="<string>"
doc="<string>"
docSystemId="<string>"
xslt="<string>"
xsltSystemId="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
doc |
源 XML 文档 |
否 |
Body |
docSystemId |
源 XML 文档的 URI |
否 |
无 |
xslt |
XSLT 样式表 |
是 |
无 |
xsltSystemId |
源 XSLT 文档的 URI |
否 |
无 |
result |
接收转换结果的对象 |
否 |
Print to page |
var |
代表被转换的 XML 文档的变量 |
否 |
Print to page |
scope |
var 属性的作用域 |
否 |
无 |
<x:param> 标签
- <x:param> 标签与 <x:transform> 标签一同使用,用于设置 XSLT 样式表的参数。
<x:param name="<string>" value="<string>"/>
属性 |
描述 |
是否必要 |
默认值 |
name |
XSLT 参数的名称 |
是 |
Body |
value |
XSLT 参数的值 |
否 |
无 |
网友评论