一、引用JSTL
1、 JSTL的引入可以讓JSP代碼中<%%>等代碼消失掉,再結合EL表達式,會更加方便以及美觀。
2、 各套框架(還沒有學習,比如struts,SpringMVC等)都有自己的標簽庫,這時JSTL可以作為公共、通用的,橫行於各框架中。
操作:
第一步:下載JSTL包
下載地址:http://tomcat.apache.org/taglibs/





第二步,新建一個jsp頁面

JSTl基本應用:
1.核心標簽庫:包括基本的語言功能,變量操作,流程控制等等。
2.國際化和格式化標簽庫:進行國際化操作和格式化操作,例如格式化時間等等。
3.SQL標簽庫:主要用於對關系型數據庫的存儲操作。
4.XML標簽庫:主要用於對xml格式數據的操作。
5.函數標簽庫:主要定義對字符串操作的函數庫,在EL表達式中運行。
在上述五種標簽庫中,常用的有核心標簽庫、格式化標簽庫和函數標簽庫,在下面的內容中我們將一 一給大家講解。
二、核心標簽庫
1.多用途核心標簽
1.1用於顯示的<c:out>
<c:out>標簽是一個最常用的標簽,用於在JSP中顯示數據。
NewFile.jsp代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL Hello World!</title>
</head>
<body>
<c:out value="Hello World"></c:out>
</body>
</html>
運行結果:

1.2用於賦值的<c:set>標簽
<c:set>標簽用於為變量或Javabean中的變量屬性賦值的工作。
NewFile.jsp代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <c:set value="this is andy" var="oneString"></c:set>
${oneString} //該示例將名為"oneString"的變量賦值為"this is andy",其中作用范圍為page。 </body> </html>
運行結果:

1.3用於刪除的<C:remove>標簽
<C:remove>標簽用於刪除存在於scope中的變量。
NewFile.jsp代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <c:remove var="sampleValue" scope="session"></c:remove> ${sessionScope.sampleValue} //該示例將存在於Session中名為"sampleValue"的變量刪除。下一句EL表達式顯示該變量時,該變量已經不存在。 </body> </html>
1.4異常捕獲的<C:catch>標簽
<C:catch>標簽允許在jsp也面中捕獲異常。它包含一個var屬性,是一個描述異常的變量。
NewFile.jsp代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <c:catch>${param.sampleSingleValue[9]==3}</c:catch> ${err} //當"${param.sampleSingValue[9]==3}"表達式有異常時,可以從var屬性"err"得到異常的內容,通常判斷"err"是否為null來決定錯誤信息的提示。 </body> </html>
運行結果:

2.條件控制標簽
2.1用於判斷的<c:if>標簽
<c:if>標簽用於簡單的條件語句。
下面看一個示例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <c:if test="${paramValue.sampleValue[2]==12}" var="visits" > It is 12 </c:if><br> ${visits}
//判斷request請求提交的傳入控件數組參數中,下標為“2”的控件內容是否為“12”,若為12則
//顯示“It is 12”。判斷結果保存在page范圍中的“visits”變量中。 </body> </html>
2.2復雜的判斷<c:choose>、<c:when>、<c:otherwise>標簽
這三個標簽實現復雜條件判斷語句,類似“if,elseif”的條件語句。
1.<c:choose>標簽沒有屬性,可以被認為是父標簽,<c:when>、<c:otherwise>
將作為其子標簽來使用。
2.<c:when>標簽等價於“if”語句,它包含一個test屬性,該屬性表示需要判斷的條件。
3.<c:otherwise>標簽沒有屬性,它等價於“else”語句。
下面看一個復雜條件語句的示例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <c:choose> <c:when test="${paramValues.sampleValue[2]==11}"> not 12 not 13,it is 11 </c:when> <c:when test="${paramValues.sampleValue[2]==12}"> not 11 not 13,it is 12 </c:when> <c:when test="${paramValues.sampleValue[2]==13}"> not 11 not 12,it is 13 </c:when> <c:otherwise> not 11、12、13 </c:otherwise> </c:choose>
//判斷request請求提交的傳入控件數組參數中,下標為“2”控件內容是否為“11”或“12”或“13”,並根據判斷結果顯示各自的語句,若都不是則顯示“not 11、12、13” </body> </html>
運行結果:

2.3<c:import>檢索一個絕對或相對 URL,然后將其內容暴露給頁面
<c:import>標簽提供了所有<jsp:include>行為標簽所具有的功能,同時也允許包含絕對URL。
舉例來說,使用<c:import>標簽可以包含一個FTP服務器中不同的網頁內容。
語法格式:
<c:import url="<string>" var="<string>" scope="<string>" varRender="<string>" context="<string>" charEncoding="<string>"/>
<c:import>的屬性:

下面來看示例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>c:import 標簽實例</title> </head> <body> <c:import var="data" url="http://www.baidu.com"/> <c:out value="${data}"/> </body> </html>
3.循環控制標簽
3.1循環<c:forEach>標簽
基礎迭代標簽,接受多種集合類型為循環控制標簽。
<c:forEach>標簽有如下屬性:

<c:forEach>語法格式:
<c:forEach items="<object>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>"> ...
<c:forEach>示例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>c:forEach 標簽實例</title> </head> <body> <c:forEach var="i" begin="1" end="5"> Item <c:out value="${i}"/><p> </c:forEach> </body> </html>
運行結果:
Item 1 Item 2 Item 3 Item 4 Item 5
3.2分隔字符的<c:forTokens>標簽
<c:forTokens>標簽可以根據某個分隔符指定字符串,相當於Java.util.StirngTokenizer類。
<c:forTokens>標簽與<c:forEach>標簽有相似的屬性,不過<c:forTokens>還有另一個屬性:
| 屬性 | 描述 | 是否必要 | 默認值 |
| delims | 分隔符 | 是 | 無 |
<c:forTokens>語法格式:
<c:forTokens items="<string>" delims="<string>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">
<c:forTokens>示例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:forTokens 標簽實例</title>
</head>
<body>
<c:forTokens items="google,runoob,taobao" delims="," var="name">
<c:out value="${name}"/><p>
</c:forTokens>
</body>
</html>
運行結果:
google
runoob
taobao
未完待續......
