一、核心标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%String kjk="ui,er,san,si";
request.setAttribute("kjk",kjk);
%>
<%String array[]={"00","11","22","33"};
request.setAttribute("array",array);%>
<c:set value="lixiaofeng" var="user" scope="request"></c:set>
<c:set var="users" scope="request">gggdfd</c:set>
<c:out value="${requestScope.user}" escapeXml="true"></c:out>
<c:remove var="user" scope="request"/>
<c:out value="${requestScope.user}" escapeXml="true"></c:out>
<c:choose>
<c:when test="">
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
<c:forEach items="${requestScope.array}" var="it">
<c:out value="ghg">
</c:out>
</c:forEach>
<c:forTokens delims="," items="${requestScope.kjk}" var="nn">
<c:out value="${nn}">
</c:out>
</c:forTokens>
1/1通用标签
1/1/1<c:out>标签
属性名 | 描述 | 是否必需 | 默认值 |
Value | 要输出的信息,可以是常量或者EL表达式 | 是 | 无 |
default | Value属性的值为null时输出的信息 | 否 | 标签体的内容 |
escapeXml | 是否忽略value属性值的XML标签 | 否 | true |
<c:out value="${header['User-Agent']}" escapeXml="true"></c:out>
<c:out value="<h3>练习1</h3>" escapeXml="false">
</c:out>
<c:out value="<h3>练习2</h3>" escapeXml="true">
</c:out>
<c:out value="<h3>练习3</h3>">
</c:out>
1/1/2<c:set>标签
属性名 | 描述 | 是否必要 | 默认值 |
Value | 要设定的值,可以是常量字符串或EL表达式 | 否 | 标签体内容 |
Target | 需要设定属性的对象 | 否 | 无 |
Property | 被赋值的属性名 | 否 | 无 |
Var | 被赋值的变量名 | 否 | 无 |
Scope | 变量的使用范围,取值为page,request,session,application之一 | 否 | Page |
注:如果target属性存在,则property属性必须存在
4种用法:
1 <c:set value="lixiaofeng" var="user" scope="request"/>
2 <c:set var="user" scope="request">
lixiaofeng
</c:set>
3 <c:set value="lixiaofeng" target="target" property =" propertyName "/>
4 <c:set target="target" property =" propertyName ">
lixiaofeng
</c:set>
例子:
<%
HashMap hm=new HashMap();
hm.put("actor1","葛优");
hm.put("actress1","林心如");
hm.put("actress2","赵薇");
request.setAttribute("hm",hm);
request.setAttribute("money",new Integer("100"));
%>
<c:set var="money" value="200" scope="page">
</c:set>
<c:out value="${hm.actor1}"/>
<c:out value="${hm.actress1}"/>
<c:out value="${hm.actress2}"/>
<!--为对象添加属性actor2-->
<c:set target="${hm}" property="actor2">
梁朝伟
</c:set>
<!--修改对象的属性actor1的值-->
<c:set value="郑伊健" target="${hm}" property="actor1">
</c:set>
<c:out value="${hm.actor2}"/>
<c:out value="${hm.actor1}"/>
<c:out value="shjsjh">
</c:out>
1/1/3<c:remove>标签
属性名 | 描述 | 是否必要 | 默认值 |
Var | 被删除的变量或对象名 | 是 | 无 |
Scope | 被删除的变量或对象所在的范围,取值为page,request,session,application之一 | 否 | 范围 |
<c:set value="lixiaofeng" var="user" scope="request"></c:set>
<c:out value="${requestScope.user}" escapeXml="true"></c:out>
<c:remove var="user" scope="request"/>
<c:out value="${requestScope.user}" escapeXml="true"></c:out>
注:<c:set>标签也可以用于删除变量和对象,如:
<c:set var=”varName” value=”${expresstion}” scope=”page|request|session|application”/>当value的值表达式微null是,则变量或对象将从指定范围内删除,若不指定范围,将删除所有找到的
1/1/4<c:catch>标签
属性名 | 描述 | 是否必要 | 默认值 |
Var | 接收异常信息的变量名 | 否 | 无 |
<c:catch var="ex1">
<%String s1="abc";
out.print(s1.length());
%>
</c:catch>
无异常:${ex1}<br/>
<c:catch var="ex2">
<% String s2=null;
out.print(s2.length());
%>
</c:catch>
异常1:${ex2}<br/>
<c:catch var="ex3">
<%int a=0;
out.print(8/a);
%>
</c:catch>
异常2:${ex3}
1/2条件标签
//条件标签<c:if> <c:choose> <c:when> <c:otherwise>
1/2/1 <c:if>
属性名 | 描述 | 是否必需 | 默认值 |
test | 用于条件判断的布尔表达式 | 是 | 无 |
Var | 存储条件判断结果的变量 | 否 | 无 |
Scope | Var变量的使用范围,取值为page,request,session,application之一 | 否 | page |
<c:if test="${1!=0}">
<c:out value="mmm"></c:out>
</c:if>
<jsp:useBean id="now" class="java.util.Date" scope="request"></jsp:useBean>
${now.hours}${now.minutes}${now.seconds}
<c:if test="${now.hours>=0&&now.hours<12}">
上午好
</c:if>
<c:if test="${now.hours>=12&&now.hours<18}">
下午好
</c:if>
<c:if test="${now.hours>=18&&now.hours<=23}">
晚上好
</c:if>
1/2/2<c:choose> <c:when> <c:otherwise>
<c:set var="score" value="${param.score}">
</c:set>
<c:choose>
<c:when test="${score>0&&score<=60}">
成绩很不理想,继续努力
</c:when>
<c:when test="${score>60&&score<=75}">
成绩一般,继续努力
</c:when>
<c:when test="${score>75&&score<=90}">
成绩不错,继续努力
</c:when>
<c:when test="${score>90&&score<=100}">
成绩很好,继续保持
</c:when>
<c:otherwise>
成绩输入有误
</c:otherwise>
</c:choose>
1/3循环迭代标签
//循环迭代标签
1/3/1<c:forEach>
属性名 | 描述 | 是否必须 | 默认值 |
Items | 用于迭代的对象 | 否 | 无 |
begin | 循环迭代的起始位置 | 否 | 0 |
end | 循环迭代的结束位置 | 否 | 对象最后一个元素 |
Step | 循环迭代的步长 | 否 | 1 |
Var | 循环迭代的当前元素对象 | 否 | 否 |
varStatus | 循环迭代的当前元素的状态 | 否 | 否 |
注:items或者begin和end属性必须指定其一varstatus包括4个状态:index,count,first,last
<%
HashMap hm=new HashMap();
hm.put("age","30");
hm.put("height","150");
hm.put("sex","female");
hm.put("get","5k");
request.setAttribute("hm",hm);
%>
<c:forEach var="mm" items="${hm}" varStatus="ss">
${mm.key} ${mm.value} ${ss.index} ${ss.first} ${ss.last} ${ss.count}<br/>
</c:forEach>
<!--遍历StringTokenizer-->
<h3>"氮气,氧气,二氧化碳,氢气,硫化氢,一氧化碳,二氧化硫"</h3>
<c:forEach var="vv" items="氮气,氧气,二氧化碳,氢气,硫化氢,一氧化碳,二氧化硫" begin="2" end="6" varStatus="sy">
<c:if test="${sy.first}">
begin:${sy.begin}
end:${sy.end}
${vv}
</c:if>
<c:if test="${sy.last}">
总数为:${sy.count}
</c:if>
</c:forEach>
1/3/2<c:forTokens>标签
属性名 | 描述 | 是否必要 | 默认值 |
Items | StringTokenizer | 是 | 无 |
Delims | 分隔符 | 是 | 无 |
Begin | 起始位置 | 否 | 0 |
End | 结束位置 | 否 | StringTokenizer的最后一个元素 |
Step | 步长 | 否 | 1 |
Var | 当前元素 | 否 | 否 |
varStatus | 当前元素的状态 | 否 | 否 |
注:只能遍历以逗号作为分隔符的StringTokenizer对象,可以同时指定一个或者多个分隔符
<%String kjk="ui,er,san,si";
request.setAttribute("kjk",kjk);
%>
<c:forTokens delims="," items="${requestScope.kjk}" var="nn">
<c:out value="${nn}">
</c:out>
</c:forTokens>
<c:set value="西瓜,苹果-梨-香蕉,西红柿,芒果-水蜜桃-栗子,菠萝,橙子-樱桃,葡萄-柿子" var="fruits">
</c:set>
<!--以“-”为分隔符-->
<c:forTokens var="fruit" delims="-" items="${fruits}" varStatus="ss">
${ss.count}: ${fruit}<br/>
</c:forTokens>
<!--以“,”为分隔符-->
<c:forTokens var="fruit" delims="," items="${fruits}" varStatus="ss">
${ss.count}: ${fruit}<br/>
</c:forTokens>
<!--以“,”为分隔符 begin为2,end为5-->
<c:forTokens var="fruit" delims="," items="${fruits}" varStatus="ss" begin="2" end="5"><br/>
${ss.count}: ${fruit}
</c:forTokens>
<!--以“-,”为分隔符-->
<c:forTokens var="fruit" delims="-," items="${fruits}" varStatus="ss"><br/>
${ss.count}: ${fruit}
</c:forTokens>
<!--以“-,”为分隔符 begin为2,end为5-->
<c:forTokens var="fruit" delims="-," items="${fruits}" varStatus="ss" begin="2" end="5"><br/>
${ss.count}: ${fruit}
</c:forTokens>
<!--以“-,”为分隔符-->
<c:forTokens var="fruit" delims="-," items="${fruits}" varStatus="ss" step="3"><br/>
${ss.count}: ${fruit}
</c:forTokens>
1/4URL相关标签
实现资源导入,格式化URL,参数传递和重定向等,有4个:<c:import> <c:url> <c:param> <c:redirect>
1/4/1 <c:import>
属性名 | 描述 | 是否必要 | 默认值 |
URL | 导入资源的URL | 是 | 无 |
Context | /加上本地WEB应用的名字,当URL属性为相对地址时使用 | 否 | 当前的WEB应用 |
charEncoding | 导入资源时使用的编码字符集 | 否 | ISO-8859-1 |
Var | 保存导入内容的变量 | 否 | 输出到页面 |
Scope | 变量使用的范围 | 否 | Page |
VarReader | 保存导入内容的Java.io.Reader对象 | 否 | 无 |
导入其他服务器资源
<c:import url="http://www.baidu.com/" charEncoding="gbk">
</c:import>
导入本地资源
<c:import url="importtest.jsp" context="/webpage" var="vv">
${vv}
</c:import>
需要在tomcat的server.xml的<host>内添加
<Content path=”/webpage” docBase=”webpage” debug=”0” reloadable=”true” crossContext=”true”/>
1/4/2 <c:url>标签
属性名 | 描述 | 是否必要 | 默认值 |
Value | 用于输出或格式化的url | 是 | 无 |
Context | /加上本地WEB应用的名字,当URL属性为相对地址时使用 | 否 | 当前的应用 |
Var | 保存导入内容的变量 | 否 | 输出到页面 |
Scope | 变量的使用范围 | 否 | Page |
<c:url>的用法:
1、<c:url value=”value” [context=”context”]/>
2、<c:url value=”value” [context=”context”]>
<c:param>…..
</c:url >
3、<c:url value=”value” [context=”context”] var =“varName” [scope=”page|request|session|application”]/>
4、<c:url value=”value” [context=”context”] var =“varName” [scope=”page|request|session|application”]>
<c:param>…..
</c:url>
输出绝对URL:<c:url value="http://www.sohu.com"></c:url><br/>
输出相对URL:<c:url value="/WEB-INF/web.xml" context="/webpage"></c:url><br/>
输出带参数的URL:
<c:url value="/iftest.jsp">
<c:param name="a" value="1">
</c:param>
<c:param name="b" value="2">
</c:param>
</c:url><br/>
保存格式化:
绝对URL:
<c:url var="ftp" value="ftp://61.185.32.191">
</c:url>
<a href="${ftp}">电子图书</a><br/>
保存相对地址:
<c:url var="testhtml" value="/paratest.html" context="/webpage">
</c:url>
<a href="${testhtml}">web应用</a><br/>
保存带参数的URL:
<c:url var="testhtml1" value="/paratest.html" context="/webpage">
<c:param name="user" value="lixiaofeng">
</c:param>
<c:param name="age" value="21">
</c:param>
</c:url>
<a href="${testhtml1}">fengfei</a>
1/4/3 <c:param>标签
属性名 | 描述 | 是否必须 | 默认值 |
Name | 参数的名字 | 是 | 无 |
Value | 参数的值 | 否 | 标签体内容 |
注:不能独立使用,只能用于<c:import> <c:url>和 <c:redirect>标签体内添加参数
1/4/4 <c:redirect>标签
属性名 | 描述 | 是否必须 | 默认值 |
URL | 请求被重定向的URL | 是 | 无 |
Context | /加上本地WEB应用的名字,当URL属性为相对地址时使用 | 否 | 当前web应用 |
注:相当于response的sendredirect(),它能支持中文的自动编码,支持自动URL重写,并允许使用不同的WEB应用的相对URL
<c:redirect url="/servletone" context="/Webpage">
<c:param name="color">
Red
</c:param>
<c:param name="sex">
Female
</c:param>
<c:param name="hob">
singsong
</c:param>
</c:redirect>
二、格式标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
2/1国际化(I18N)标签
国际化(又I18N)
包括:<fmt:setLocale> <fmt:requestEncoding> <fmt:bundle> <fmt:setBundle>
<fmt:message> <fmt:param>
2/1/1 <fmt:setLocale>标签
属性名 | 描述 | 是否必要 | 默认值 |
Value | 区域属性,可以是类型为Java.util.Location的表达式,也可以是字符串,字符串格式为“11”或“11_CC”或11-CC,11为语言代码,CC为国家代码。参见: http:www.sil.org/iso639-3/codes.asp http:www.iso.org/iso/country_codes/iso_3166_code_lists/en glish_country_name_and_code_elements.html | 是 | 无 |
Variant | 厂商或浏览器的特点变量如:WIN ,MAC | 否 | 无 |
Scope | 区域设定的适用范围 | 否 | Page |
2/1/2 <fmt:requestEncoding>标签
属性名 | 描述 | 是否必要 | 默认值 |
Value | 请求中字符的编码格式,参见:http:www.iana.org/assignments/character-sets | 是 | 无 |
2/1/3 <fmt:bundle>标签
属性名 | 描述 | 是否必须 | 默认值 |
Basename | 资源包文件的基本名称后缀由jsp容器根据页面的区域属性来确定 | 是 | 无 |
Prefix | 文件项中“键”的前缀 | 否 | 无 |
2/1/4 <fmt:setBundle>标签
属性名 | 描述 | 是否必要 | 默认值 |
Basename | 资源包文件的基本名称后缀由jsp容器根据页面的区域属性来确定 | 是 | 无 |
Var | 存储资源包的变量 | 否 | 存储在javax.servlet.jsp.jstl.fmt.loca lizatinoContext中 |
Scope | 变量的使用范围 | 否 | Page |
2/1/5 <fmt:message>标签
属性名 | 描述 | 是否必须 | 默认值 |
Key | 资源文件的键,如果<fmt:message>在<fmt:bundle>标签内部使用,键的前面会自动加上<fmt:bundle>中的prefix属性值的的前缀 | 否 | 标签体内容 |
Bundle | 值为表达式,当<fmt:message>标签独立使用时,该属性指明所使用的资源包 | 否 | 默认资源包 |
Var | 存储键所对应的值的变量 | 否 | 输出到页面 |
Scope | 变量的使用范围 | 否 | Page |
2/2日期处理标签
<fmt:formatDate> <fmt:parseDate> <fmt:timeZone> <fmt:setTimeZone>
2/2/1 <fmt:timeZone>标签
属性值 | 描述 | 是否必要 | 默认值 |
Value | 表示时区的字符串或者Java.util.TimeZone类型的对象 | 是 | 无 |
2/2/2<fmt:setTimeZone>标签
属性名 | 描述 | 是否必需 | 默认值 |
Value | 表示时区的字符串或者Java.util.TimeZone类型的对象 | 是 | 无 |
Var | 存储时区的变量 | 否 | 存储在javax.servlet.jsp.jstl.fmt. timeZone中 |
Scope | 变量的使用范围 | 否 | Page |
2/2/3<fmt:formatDate>标签
属性名 | 描述 | 是否必须 | 默认值 |
Value | 用于格式化的日期对象 | 是 | 无 |
Type | Date、Time、both | 否 | Date |
DateStyle | default,short,medium,long或full | 否 | default |
TimeStyle | default,short,medium,long或full | 否 | default |
pattern | 自定义格式化的格式如:yyyy-mm-dd格式 | 否 | 无 |
timeZone | 格式化使用时区 | 否 | 默认时区 |
Var | 存储格式化结果的变量 | 否 | 输出到页面 |
Scope | 变量的使用范围 | 否 | Page |
Pattern表
字符 | 描述 | 字符 | 描述 |
G | 公元(如公元,AD等) | H | 小时(按天计,0-23) |
y | 年(yy为两位数,yyyy为四位) | k | 小时(按天计,1-24) |
M | 月(MM为数字月,MMM为月名) | K | 小时(按上下午计,0-11) |
W | 周(一年中的第几周) | h | 小时(按上下午计,1-12) |
w | 周(一月中的第几周) | m | 分 |
D | 日(一年中的第几天) | s | 秒 |
d | 日(一月中的第几天) | S | 毫秒 |
F | 月份中的星期 | z | 时区名:(如GMT+08:00) |
E | 一周内的星期几 | Z | 时区编号(如:+0800) |
a | 上下午指示(如上午AM等) |
|
|
2/2/4<fmt:parseDate>标签
属性名 | 描述 | 是否必须 | 默认值 |
Value | 用于解析的字符串 | 否 | 标签体内容 |
type | date、time,both | 否 | date |
dateStyle | default.short,,medium.long,full | 否 | default |
ParseLocale | 解析字符串时使用的区域属性 | 否 | 默认区域属性 |
TimeStyle | default.short,,medium.long,full | 否 | default |
Pattern | 自定义解析格式 | 否 | 无 |
timeZone | 所解析的字符串的时区 | 否 | 默认时区 |
Var | 存储解析后日期对象的变量 | 否 | 输出到页面 |
Scope | 变量的使用范围 | 否 | Page |
2/3数字处理标签
<fmt:formatNumber> <fmt:parseNumber>
2/3/1<fmt:formatNumber>标签
属性名 | 描述 | 是否必须 | 默认值 |
Value | 用于格式化的数值 | 否 | 标签体内容 |
type | Number,curency或percent | 否 | Number |
pattern | 自定义格式化的格式如:$#,##00.0# | 否 | 无 |
currencyCode | 当类型为curency是,指定货币编码 | 否 | 取决于默认区域属性 |
curencySymbol | 当类型为curency是,指定货币符号 | 否 | 取决于默认区域属性 |
groupingUsed | 是否对数值分组,取值为true或false | 否 | True |
maxIntegerDigits | 最大整数位 | 否 | 无 |
minIntegerDigits | 最小整数位 | 否 | 无 |
maxFractionDigits | 最大小数位 | 否 | 无 |
minFractionDigits | 最小小数位 | 否 | 无 |
Var | 存储格式化结果的变量 | 否 | 输出到页面 |
Scope | 变量的使用范围 | 否 | Page |
2/3/2<fmt:parseNumber>标签
属性名 | 描述 | 是否必须 | 默认值 |
value | 用于解析的字符串 | 否 | 标签体内容 |
type | Number,curency或percent | 否 | number |
parseLocale | 解析时使用的区域属性 | 否 | 默认区域属性 |
integerOnly | 解析成整数(true)或解析成浮点数(false) | 否 | False |
pattern | 自定义解析格式 | 否 | 无 |
Var | 存储解析后数值类型的变量 | 否 | 输出到页面 |
Scope | 变量的使用范围 | 否 | Page |
三、函数标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
使用:
${fn:函数名(参数列表)}
函数 | 说明 |
contains(s1,s2) | 判断字符串s2是否在字符串s1中 |
containsIgnoreCase(s1,s2) | 同上,但忽略大小写 |
startsWith(s1,s2) | 判断字符串s1是否以字符串s2开头 |
endsWith(s1,s2) | 判断字符串s1是否以字符串s2结尾 |
escapeXml(s) | 忽略字符串s中的Xml标签 |
indexOf(s1,s2) | 返回字符串s2在字符串s1中第一次出现的位置 |
split( s1,s2) | 用s2指定的分隔字符集分割字符串s1,返回字符串数组 |
join(String[] s1,s2) | 将字符串数组s1的所有字符串,以s2中指定的链接符组合 |
replace(s1,s2,s3) | 将字符串s1中的子串s2用字符串s3替换 |
trim(s) | 取出s两端空格 |
substring(s,i1,i2) | 返回字符串s中从i1开始到i2-1结束的子串 |
substringAfter(s1,s2) | 抽取字符串s1中子串s2后的字符串 |
substringBefore(s1,s2) | 抽取字符串s1中子串s2前的字符串 |
toLowerCase(s) | 转换字符串s中的所有字符串转化为小写字符 |
toUpperCase(s) | 转换字符串s中的所有字符串转化为大写字符 |
length(s) | 返回字符串s的长度 |
例子:
函数表达式:\${fn:contains("dddd","dhkjhj")}
结果:${fn:contains("dddd","dhkjhj")}
四、 SQL标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
4/0/1<sql:setDataSource>
属性名 | 描述 | 是否必须 | 默认值 |
dataSource | JNDI中dataSource的名字或dataSource对象 |
| 无 |
driver | JDBC驱动程序名字 |
| 无 |
url | 数据库连接的JDBC url |
| 无 |
user | 访问数据库的用户名 |
| 无 |
password | 访问数据库的密码 |
| 无 |
var | 存储数据源的变量 |
| 默认的数据源变量 |
scope | 变量使用范围 |
| Page |
<sql:setDataSource driver="com.mysql.jdbc.Driver" user="root" password="root" url="jdbc:mysql://localhost:3306/ebusi?antoReconnect=true&useUnicode=true&characterEncoding=UTF-8"/>
4/0/2 <sql:query>
属性名 | 描述 | 是否必须 | 默认值 |
sql | 执行查询的SQL语句 | 否 | 标签体内容 |
dataSource | 用于指明所使用的数据源 | 否 | 默认数据源 |
maxRows | 查询结果的最大行数 | 否 | 无限制 |
startRow | 查询结果的起始行索引值 | 否 | 0 |
var | 存储查询结果的变量 | 是 | 无 |
scope | 变量的使用范围 | 否 | Page |
<sql:setDataSource driver="com.mysql.jdbc.Driver" var="ds" user="root" password="root" url="jdbc:mysql://localhost:3306/ebusi?antoReconnect=true&useUnicode=true&characterEncoding=UTF-8"/>
<sql:query var="result" dataSource="${ds}" sql="select * from table_admin" >
<c:forEach var="row" items="${result.rows}">
${row.admin_login_name}
</c:forEach>
</sql:query>
4/0/3<sql:update>标签
属性名 | 描述 | 是否必须 | 默认值 |
sql | 执行更新的SQL语句 | 否 | 标签体的内容 |
dataSource | 用于指明所使用的数据源 | 否 | 默认数据源 |
var | 存储更新操作所影响的行数的变量 | 是 | 无 |
scope | 变量使用范围 | 否 | page |
<sql:update dataSource="${ds}">
insert into table_user_base values(1022,'dddd','123456',0.0,0,0)
</sql:update>
4/0/4<sql:param>和<sql:dateParam >标签
若<sql:query>和<sql:update>标签中使用了带参数的SQL语句(参数用?表示),则需要<sql:param>或<sql:dateParam >设置执行时传递的参数的值,<sql:param>只有一个属性value
属性名 | 描述 | 是否必需 | 默认值 |
value | 用于指明日期类型参数的值 | 否 | 标签体内容 |
type | Cajsu8的具体类型,取值为date,time,timestamp | 否 | timestamp |
<sql:update dataSource="${ds}">
update table_user_base set user_base_name=? where id=1001
<sql:param value="kjl">
</sql:param>
</sql:update>
4/0/5<sql:transaction>标签
属性名 | 描述 | 是否必需 | 默认值 |
dataSource | 用于指明所使用的数据源 | 否 | 默认数据源 |
isolationLevel | 事物处理的隔离级别,取值为read_committed、read_uncommitted、repeatable_read、serializable | 否 | 数据源指定的数据库的默认隔离级别 |
五、XML标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
JSTL的XML标签库提供了解析XML文档。提取xml文档中数据、流程控制和XSLT转换等功能。分为:xml核心标签,xml流程标签,xml转换标签
xml核心标签:<x:parse> <x:out> <x:set >
xml流程标签:<x:if> <x:choose> <x:forEach> <x:when> <x:otherwise>
xml转换标签:<x:transform> <x:param>
<x:parse>标签用于解析xml文档,它解析的可以是代表xml文档的String或Reader对象,也可以是其标签体内的xml数据
属性名 | 描述 | 是否必需 | 默认值 |
doc(xml) | 用于解析的xml文件,可以是String或Reader对象,推荐使用doc属性 | 否 | 标签体内容 |
systemId | 为解析的xml文档指定系统标识uri | 否 | 无 |
filter | 解析xml之前使用的XMLFilter类型的过滤器 | 否 | 无 |
var | 存储解析结果的变量 | 否 | 无 |
scope | Var变量的使用范围 | 否 | Page |
varDom | 存储解析结果为DOM类型的变量 | 否 | 无 |
scopeDom | varDom变量的使用范围 | 否 | Page |
<x:out>标签用于计算Xpath表达式的值并输出
属性名 | 描述 | 是否必需 | 默认值 |
select | 用于计算Xpath表达式 | 是 | 无 |
escapeXml | 输出表达式的值时,是否忽略其中的XML标签 | 否 | True |
<x:set >标签用于计算Xpath表达式并将其结果保存在变量中
属性名 | 描述 | 是否必需 | 默认值 |
select | 用于计算Xpath表达式 | 是 | 无 |
var | 存储表达式结果的变量 | 是 | 无 |
scope | 变量的使用范围 | 否 | Page |
注:Xpath表示数据在XML文档中的存储位置,通过计算Xpath表达式的值,可以提取xml文档中的数据