一,JSTL介紹:
JSTL標簽庫,是日常開發經常使用的,也是眾多標簽中性能最好的。把常用的內容,放在這里備份一份,隨用隨查。盡量做到不用查,就可以隨手就可以寫出來。這算是Java程序員的基本功吧,一定要扎實。
JSTL全名為JavaServer Pages Standard Tag Library。JSTL是由JCP(Java Community Process)所制定的標准規范,它主要提供給Java Web開發人員一個標准通用的標簽函數庫。
Web程序員能夠利用JSTL和EL來開發Web程序,取代傳統直接在頁面上嵌入Java程序(Scripting)的做法,以提高程序的閱讀性、維護性和方便性。
二,JSTL配置:
主要牽涉到兩個jar包
standward.jar和jstl.jar包 (兩個包1.0和1.2版本的下載以及TLD下載路徑如下:下載路徑)
加載方式包括兩種
1,非自動加載
a,將tld文件copy到WEB-INFO下的tld目錄下,沒有就創建之
b,修改web.xml文件配置,添加配置如下

1 <jsp-config> 2 <taglib> 3 <taglib-uri>http://java.sun.com/jstl/core</taglib-uri> 4 <taglib-location>/WEB-INF/tld/c.tld</taglib-location> 5 </taglib> 6 <taglib> 7 <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri> 8 <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location> 9 </taglib> 10 <taglib> 11 <taglib-uri>http://java.sun.com/jstl/fn</taglib-uri> 12 <taglib-location>/WEB-INF/tld/fn.tld</taglib-location> 13 </taglib> 14 </jsp-config>
c,jsp中引用taglib
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
2,自動加載
Servlet2.4規范提供了對tld文件的自動加載,tld文件在standard.jar的META-INF文件夾中。
如:c.tld文件提供了對核心jstl標簽的描述
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>JSTL 1.1 core library</description>
<display-name>JSTL core</display-name>
<tlib-version>1.1</tlib-version>
<short-name>c</short-name>
<uri>http://java.sun.com/jsp/jstl/core</uri>
可以看到其引用的uri為http://java.sun.com/jsp/jstl/core
則在jsp中引用taglib為: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
三,JSTL核心標簽庫的使用
JSTL 核心標簽庫標簽共有13個,功能上分為4類:
1.表達式控制標簽:out、set、remove、catch
2.流程控制標簽:if、choose、when、otherwise
3.循環標簽:forEach、forTokens
4.URL操作標簽:import、url、redirect
使用標簽時,一定要在jsp文件頭加入以下代碼:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
下面分別對這些標簽進行說明:
1. <c:out> 用來顯示數據對象(字符串、表達式)的內容或結果
使用Java腳本的方式為:<% out.println("hello") %> <% =表達式 %>
使用JSTL標簽:<c:out value="字符串">
2. <c:set> 用於將變量存取於 JSP 范圍中或 JavaBean 屬性中。
3.<c:remove> 主要用來從指定的 jsp 范圍內移除指定的變量。使用類似,下面只給出語法:
<c:remove var="變量名" [scope="page|request|session|application"]></c:remove>
4.<c:catch> 用來處理 JSP 頁面中產生的異常,並存儲異常信息
<c:catch var="name1">
容易產生異常的代碼
</c:catch>
如果拋異常,則異常信息保存在變量 name1 中。
5.<c:if>
<c:if test="條件1" var="name" [scope="page|request|session|application"]></c:remove>
6. <c:choose> <c:when> <c:otherwise> 三個標簽通常嵌套使用,第一個標簽在最外層,最后一個標簽在嵌套中只能使用一次
7.<c:forEach>
語法:<c:forEach var="name" items="Collection" varStatus="statusName" begin="begin" end="end" step="step"></c:forEach>
該標簽根據循環條件遍歷集合 Collection 中的元素。 var 用於存儲從集合中取出的元素;items 指定要遍歷的集合;varStatus 用於存放集合中元素的信息。varStatus 一共有4種狀態屬性,分別為索引,迭代次數,是否第一個元素,是否最后一個元素
8.<c:forTokens> 用於瀏覽字符串,並根據指定的字符串截取字符串
語法:<c:forTokens items="stringOfTokens" delims="delimiters" [var="name" begin="begin" end="end" step="len" varStatus="statusName"]></c:forTokens>
部分文章轉自下面博客,更詳細的例子詳見下面博客:http://www.cnblogs.com/lihuiyy/archive/2012/02/24/2366806.html