一、.JSTL概念
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。顾名思义,format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行 JSP 页面的国际化。xml 库包含一些标记,这些标记用来操作通过 XML 表示的数据,而 sql 库定义了用来查询关系数据库的操作。
如果要使用JSTL,则必须将jstl.jar和 standard.jar文件放到classpath中。
二、分类
1.核心标签库
引用核心标签库:<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core %>
<c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是<c:out>标签可以直接通过"."操作符来访问属性.
语法格式:<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
属性:
<c:out value="<B>goodgood</B>" escapeXml="true"></c:out><!--输出结果:<B>goodgood</B>-->
<c:out value="<B>goodgood</B>" escapeXml="false"></c:out><!--输出结果:加粗的字体-->
<c:set>标签用于设置变量值和对象属性。
语法格式:<c:set var="<string>" value="<string>" target="<string>" property="<string>" scope="<string>"/>
属性:
如果指定了target属性,那么property属性也需要被指定。
<c:set var="sal" scope="session" value="${2000*2 }"/>
<c:out value="${sal }"></c:out><!-- 输出结果4000 -->
<c:remove>标签用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。
语法格式:<c:remove var="<string>" scope="<string>"/>
<c:set var="sal" scope="session" value="${2000*2 }"/>
sal变量值:<c:out value="${sal }"></c:out><!-- 输出结果4000 -->
<c:remove var="sal"/>
删除sal变量后的值:<c:out value="${sal }" default="1234"></c:out>
<c:catch> 标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。
语法格式:<c:catch var="<string用来储存错误信息的变量>">...</c:catch>
<c:catch var="catchException"><% int x=5/0; %></c:catch>
<c:if test="${catchException !=null }">
异常为:${catchException }<br>
发生异常:${catchException.message }
</c:if>
<c:if>标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。
语法格式:<c:if test="<boolean>" var="<string>" scope="<string>"> ...</c:if>
<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。
switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<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:choose>标签没有属性。
<c:when>标签只有一个属性,在下表中有给出。
<c:otherwise>标签没有属性。
<c:set var="age" value="30" scope="page"/>
<c:choose>
<c:when test="${age<18 }">年龄为:<c:out value="${age }"/></c:when>
<c:when test="${age>18&&age<40 }">年龄为:<c:out value="${age }"/></c:when>
<c:otherwise>年龄为:<c:out value="${age }"/></c:otherwise>
</c:choose>
<c:import>标签提供了所有<jsp:include>行为标签所具有的功能,同时也允许包含绝对URL。
语法格式:<c:import url="<string>" var="<string>" scope="<string>" varRender="<string>" context="<string>" charEncoding="<string>"/>
属性:
<c:forEach>标签是更加通用的标签,因为它迭代一个集合中的对象。这些标签封装了Java中的for,while,do-while循环。
<c:forTokens>标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。
语法格式:<c:forEach items="<object>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">
<c:forTokens>标签与<c:forEach>标签有相似的属性,不过<c:forTokens>还有另一个属性:
<c:forEach var="i" begin="1" end="5">
循环值: <c:out value="${i}"/><p>
</c:forEach>
<c:forTokens items="google,runoob,taobao" delims="," var="name">
<c:out value="${name}"/><p>
</c:forTokens>
<c:param>标签用于在<c:url>标签中指定参数,而且与URL编码相关。
在<c:param>标签内,name属性表明参数的名称,value属性表明参数的值。
语法格式:<c:param name="<string>" value="<string>"/>
2.格式化标签库
3.SQL标签库
4.XML标签库
5.JSTL函数