USING JSP TAG LIBRARIES
JSP STANDARD TAG LIBARARY(JSTL)
1.<c:forEach>標籤的語法定義如下所示。
<c:forEach var="name" items="expression" varStatus="name"
begin="expression" end="expression" step="expression">
body content
</c:forEach>
<c:forEach>標籤具有以下一些屬性:
l var:迭代參數的名稱。在迭代體中可以使用的變量的名稱,用來表示每一個迭代變量。類型爲String。
l items:要進行迭代的集合,包括JAVA所有集合類型,迭代器,枚舉器和基本數組。
l varStatus:迭代變量的名稱,用來表示迭代的狀態,可以訪問到迭代自身的信息。
l begin:如果指定了items,那麼迭代就從items[begin]開始進行迭代;如果沒有指定items,那麼就從begin開始迭代。它的類型爲整數。
l end:如果指定了items,那麼就在items[end]結束迭代;如果沒有指定items,那麼就在end結束迭代。它的類型也爲整數。
l step:迭代的步長。
2. <c:if>; 它用來做條件判斷,功能類似jsp中的<%if(boolean){}%>
語法:
1、無body的情況
<c:if test=”testCondition” var=”varName” [scope=“{page|request|session|application}”]/>
2、有body的情況
<c:if test=”testCondition” var=”varName” [scope=“{page|request|session|application}”]>
Body內容
</c:if>
3.<c:choose>; 它是用於條件選擇,和<c:when>,<c:otherwise>一起使用,它的條件選擇是排斥性的,相當於jsp中的<%switch(i){case 0: … case 1:… default :}%>,也可以完成<%if{}…else if{}….else if{} else{} %>的功能
語法:<c:choose>
Body內容(<c:when>,<c:otherwise>)
</c:choose>
注意:它的body內容只能是由以下的元素組成:
1. 空格;
2. 0個或多個<c:when>子標籤,<c:when>必須在<c:otherwise>子標籤之前出現;
3. 0個或多個<c: otherwise >子標籤
4.<c:set>將某個變量存入page , request , session , application範圍的對象,或是設定JavaBean,Map的屬性,和值
1、使用value屬性設置一個特定範圍裏面的屬性:
<c:set value=”value” var=”varName” [scope= “{page|request|session|application}”]/ >
2、使用value屬性設置一個特定範圍裏面的屬性,帶有BODY:
<c:set value=”value” var=”varName” [scope= “{page|request|session|application}”] >
Body content
</c:set>
3、設置某個特定對象的一個屬性:
<c:set value=”value” target=”target” property=”propertyName”/ >
4、設置某個特定對象的一個屬性, 帶有BODY:
<c:set value=”value” target=”target” property=”propertyName” >
Body content
</c:set>
var 要設置的變量名
value 設置的值
target 要設置的JavaBean名稱,或Map名稱
property JavaBean的屬性或Map的key
scope 變量所在的範圍
5.<c:remove>從page , request , session , application範圍的對象內移除某個變量或屬性
語法:<c:remove var=”要移除的變量或屬性名稱”
scope=”page | request | session | application” />
注意:如未指定scope屬性,則會同時從page , request , session , application範圍的對象內移除指定
的變量或屬性。
6.<c:out>將執行結果由JspWriter對象輸出
語法:<c:out value=”執行表達式的結果”
escapeXml=”設定是否轉換XML的特殊字符true | false”
default=”如果value結果爲null或空字符串,則輸出default的值” />
7.<c:forTokens>針對某個字符串,由指定的字符爲標誌,依次取每個子串。
語法:<c:forTokens var=”存入當前的對象”
items=”被處理的字符串”
delims=”分隔子串的字符”>
標籤主體
</c:forTokens>
8.<c:url>指定或改寫某個URL
語法:<c:url vaule=”執行的URL”
context=”相同container的其它context”
var=”存入被引入的URL內容”
scope=”範圍”
標籤主體,可以加入<c:param>標籤來指定參數
</c:url>
9.<c:import>導入其它網頁的內容,相當於<jsp:include>標準動作(於執行時期包含進來)
語法:<c:import url=”被包含進來的網址或文件”
context=”相同container的其它context”
var=”url包含的內容”
scope=”範圍”
charEncoding=”被包含網站或文件的字符編碼”>
標籤主體,可以加入<c:param>標籤來指定參數
</c:import>
10.<c:redirect> 調用HttpServletResponse的sendRedirect()方法,來重定向請求
語法:<c:import url=”重定向到的目標URI”
標籤主體,可以加入<c:param>標籤來指定參數
</c:redirect>
11.<c:param>傳入某個參數
語法:<c:param name=”屬性名稱” value=”屬性值” />
12.<c:catch>
它的作用是捕捉由嵌套在它裏面的標籤所拋出來的異常。類似於<%try{}catch{}%>,它的語法是:<c:catch [var=”varName”]>nested actions</c:catch>
舉例:c_catch.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
<title>JSTL:catch的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:catch var="error">
<%
Integer.parseInt("sdkfj");
%>
</c:catch>
<hr>異常:
<c:out value="${error}"/>
<hr>異常 exception.getMessage=
<c:out value="${error.message}"/>
<hr> 異常exception.getCause=
<c:out value="${error.cause}"/>
</body>