JSTL(Jsp Standard Tags Library)是jsp的标准标签库。主要包括5大类:core,sql,function,xml,I18N.
今天主要学习了core。
core标签主要有4类
一 表达类,有out,set,remove,catch
1.<c:out>
语法如下: (1)不含本体<c:out value="",[escapeXml=true|false],[default=""] />
(2)含本体<c:out default="" />hello</c:out>
value表示要显示出来的值,可以是常量或变量(EL),default为默认值,如果value为null,则显示default的值,escapeXml代表是否转换特殊字符(如<变成<),默认为true;
2<c:set>
语法:(1)不含本体:<c:set value="value" var="varName" [scope="{page|request|session|application}"] />
(2)含本体:<c:set var="varName" [scope="{page|request|session|application}"] >hello</c:set>
它表达的是把value的值(没有value就是本体的值)存入varName变量中,scope指定varName变量存储在哪里,默认为page.
set还可以指定target和property,将value值存入target对象的property.[注]var和scope不能用EL表示。
当value为null值,相当于remove,即把变量值置空。
例子:<c:set var="num" value="2" scope="session"/> 把2赋给num变量,存入session中。
<c:set var="str" >hello world</c:set> 把hello world赋给str,存入page中。
3.<c:remove>
语法:<c:remove var="varName" [scope="{page|request|session|application}"] />
var表示要清除的变量,scope表示变量的范围。
4.<c:catch>
语法:<c:catch [var="varName"] />
var用来保存错误信息的变量。<c:catch>本体中包含可能发生异常的代码
例子:<c:catch var="errMsg">
<%
String str = "hello";
int i = Integer.parseInt(str);
%>
<c:/catch>
${errMsg}
将打出类型转换错误的异常信息。
二 流程控制类
1. <c:if>
语法: <c:if test="condition" var="varName" [scope="{page|request|session|application}"] />
test表条件判断,结果为true或false,var变量保存test的值,scope如前。
当test为true时,将执行本体的内容。
2 <c:choose>
<c:choose>本身只能做父标签,可包含1个或多个<c:when>,0个或多个<c:otherwise>
3 <c:when> <c:otherwise>
语法:<c:when test="condition" >body</c:when> test结果为true执行本体内容。
<c:otherwise>body</otherwise>
<c:when>必须在<c:otherwise>之前,当多个<c:when>时,当某个<c:when>满足时,将不再往下执行。
例子:
<c:choose>
<c:when test="${con1}">
condition1
</c:when>
<c:when test="${con2}">
condition2
</c:when>
<c:otherwise>
other condition
</c:otherwise>
</c:choose>
当con1为true,执行condition1,当con2为true,执行condition2,当con1和con2都为true,只执行condition1.如果2者都为false,则执行other condition.
三 迭代类
1 <c:forEach>
语法:<c:forEach [var="varName"] items="collection" [varStatus="statusName"] [begin="begin"] [end="end"]
[step="step"] >body</c:forEach>
var用于存放现在指到的变量,items存放集合或字符串,varStatus用于存放当前知道的变量的状态(它包含4个值:index表当前索引,first表是否为首项,last表是否为末项,count表总共指到的项目数),begin表循环开始位置,end表循环结束位置,step表循环节奏,默认为1。
2 <c:forTokens>
语法:<c:forTokens items="stringOfTokens" delims="delemiters" [var="varName"] items="collection" [varStatus="statusName"] [begin="begin"] [end="end"] [step="step"] > body</c:forTokens>
<c:forTokens>用来对string进行操作,除了delims其他都和<c:forEach>相同,delims表示分割符,可以是多个(如"|,;",有3个)
例子:
<c:forTokens items="A,B;C-D,E" delims=",;-" var="item">${item}</c:forTokens>
输出ABCDE