1.JSTL简介
JSTL是原SUN公司提供的一套标准标记库,包括c.tld、fmt.tld、x.tld、sql.tld四个主要标记库。
(1)c.tld:c.tld称为核心标记库,包含一些Web应用常用标记,如循环、分支、表达式赋值和基本输入/输出等,是最常使用的标记库。
(2)fmt.tld:fmt.tld称为格式化/国际化标记库,包括用来解析数据的标记,如日期等。
(3)sql.tld:sql.tld称为数据库标记库,包含访问数据库的标记。
(4)x.tld:x.tld称为XML标记库,包含被用来访问XML元素的标记。
JSTL与EL是什么关系?
EL最初只能在JSTL中使用,不能直接在JSP文件中使用。JSP2.0规范开始支持在JSP文件中直接解析EL。现实开发过程中,往往EL都是与JSTL结合使用,简化JSP的开发。如果没有EL,JSTL使用将很困难,需要大量复杂的表达式。如果不结合JSTL,EL的作用也非常有限。
2.JSTL使用
在JSP中使用taglib指令,导入tld文件 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
(1)c.tld中的通常目的标记。
① <c:out value="${name}"/>:输出value的值,往往可以直接使用EL替代该标记。
② <c:set var="loggedIn" scope="session" value="${true}"/>:将value的值作为属性存储到scope中。
③ <c:remove var="loggedOut" scope="session"/>:从scope中删除名字为var的属性。
④ <c:catch var="e"><%=100/0 %></c:catch>:捕获异常,异常对象使用e封装。
(2)c.tld中的条件标记。
① <c:if test="${user.login}">Welcome!</c:if>:如果test的值为true,则运行<c:if></c:if>之间的代码。
② <c:choose>, <c:when>, <c:otherwise>:实现if/else if/else逻辑
<c:choose> <c:when test="${13>4}"> hello! </c:when> <c:when test="${4<5}"> hi! </c:when> <c:otherwise> how are u? </c:otherwise> </c:choose>
(3)c.tld中的循环标记。
① <c:forEach>标记:items属性指定需要迭代的集合或数组,var属性指定迭代的当前元素
<c:forEach items="${allcustomers}" var="cust">
</c:forEach>② <c:forToken>标记:items属性指定需要迭代的字符串,delims表示分隔符,var表示使用分隔符分割items产生的字符串
<c:forTokens items="a:b:c:d" delims=":" var="token">
<c:out value="${token}"/>
</c:forTokens>
(4)c.tld与url有关的标记。
① <c:import>标记:用来包含一些文本信息。
<c:import url="http://www.5retc.com/cnn.rss" />
② <c:redirect>标记:进行响应重定向。
<c:redirect url="index.jsp">
<c:param name="login" value="true"/>
</c:redirect>