1.<c:out>
庫:Core(核心庫)
URI:http://java.sun.com/jsp/jstl/core
前綴:c?
描述:<c:out>標簽是一個最常用的標簽,用于在?JSP?中顯示數據。它的作用是用來替代通過JSP內?置對象out或者<%=%>標簽來輸出對象的值。
語法:?
沒有Body時的語法?
<c:out?value=”value”?[escapeXml=”{true|false}”]?[default=”defaultValue”]/>?
有Body時的語法?
<c:out?value=”value”?[escapeXml=”{true|false}”]>?
這里是Body部分?
</c:out>??
屬性:
屬性名 | 描述 | 類型 | 是否接受動態值 | 是否支持EL | 是否 必須 | 默認值 | 說明 |
value? | 需要顯示的值 | Object? | Y | Y | Y | 無 | 用來定義需要求解的表達式。 |
escapeXml | 是否轉換特殊字符 | boolean | Y | Y | N | true | 用于指定在使用<c:out>標記輸出諸如“<”、“>”、“’”、“””和“&”之類的字符(在?HTML?和?XML?中具有特殊意義)時是否應該進行轉義。如果將?escapeXml?設置為true,則會自動的進行編碼處理。 |
default | 缺省值 | Object | Y | Y | N | 無 | 當求解后的表達式為null或者String為空時將打印這個缺省值。 |
Null和錯誤說明
假若value為null,會顯示default的值;假若沒有設定default的值,則會顯示一個空的字符串。
實例:
------------------------------------------------------------------------------------------------------------------------------------------
Example1
<c:out?value="${sessionScope.anyValue}"?default="no?value"?escapeXml="false"/>
該示例將從Session查找名為“anyValue”的參數,并顯示在頁面,若沒有找到則顯示“no?value”。
------------------------------------------------------------------------------------------------------------------------------------------
Example2
您的用戶名是:?<c:out?value=”${user.username}”?default=”guest”/>?
顯示用戶的用戶名,如為空則顯示guest
<c:out?value="${sessionScope.username}"/>?
指定從session中獲取username的值顯示;
<c:out?value="${username}"?/>?
顯示username的值,默認是從request(page)中取,如果request中沒有名為username的對象則從session中取,session中沒有則從application(servletContext)中取,如果沒有取到任何值則不顯示
------------------------------------------------------------------------------------------------------------------------------------------
2.?<c:set>
庫:Core(核心庫)
URI:http://java.sun.com/jsp/jstl/core
前綴:c?
描述:<c:set>標簽用于為變量或JavaBean中的變量屬性賦值的工作。這個標簽用于在某個范圍(page、request、session、application等)中使用某個名字設定特定的值,或者設定某個已經存在的javabean對象的屬性。他類似于<%request.setAttrbute("name","value");%>?
語法:?
語法1:?沒有body
將value的值存儲至范圍為scope的varName變量之中
<c:set?value="value"?var="varName"?[scope="{page|request|session|application}"]/>
語法2:?有body
將body內容存儲至范圍為scope的varName變量之中
<c:set?value="value"?[scope="{page|request|session|application}"]>
?body.....
</c:set>
語法3:?將value的值存儲至target對象屬性中
<c:set?value="value"?target="target"?property="propertyNmae"/>
語法4:?將body內容的數據存儲至target對象屬性中
<c:set?target="target"?property="propertyNmae">
?body....
</c:set>
??Null?和?錯誤處理:
語法3和語法4會產生異常錯誤,有以下兩種情況:
?.target?為null
?.target?不是java.util.Map或JavaBean對象
假若value為null時:將由存儲變量改為移除變量
?.語法1:?由var和scope所定義的變量,將被移除
???.若scope已指定時,則PageContext.removeAttribute(varName,scope);
???.若scope未指定時,則PageContext.removeAttribute(varName);
?.語法3:?
???.假若target為Map時,則Map.remove(property);
???.假若target為JavaBean時,propertye指定的屬性為null
注意:?var和scope這兩個屬性不能使用表達式來表示,我們不能寫成?scope="${ourScope}"或var="${a}"
屬性:
屬性名 | 描述 | 類型 | 是否接受動態值 | 是否支持EL | 是否 必須 | 默認值 | 說明 |
value | 要被存儲的值? | Object | true | Y | 否 | 無
| 被計算的表達式 |
var | 變量名 | String | false | N | 否 | 無
| 被導出的保存了value屬性計算結果的范圍變量的名稱 |
scope | 范圍 | String | true | N | 否 | page | var的JSP范圍 |
target | 目標?對象 | String | true | Y | 否 | 無
| 要設置屬性的對象。必須是JavaBean對象或java.util.Map對象 |
property | 指定target對象屬性 | Object? | true | Y | 否 | 無
| 要設置的target對象的屬性的名稱 |
實例:
------------------------------------------------------------------------------------------------------------------------------------------
Example1
<c:set?value="this?is?andy"?var="oneString"/>
該示例將為名為“oneString”的變量賦值為“this?is?andy”,其作用范圍為page。
------------------------------------------------------------------------------------------------------------------------------------------
Example2
<c:set?target="${cust.address}"?property="city"?value="$"/>?
將對象cust.address的city屬性值保存到變量city中。
------------------------------------------------------------------------------------------------------------------------------------------
Example3
設置不同的屬性,并且指定它們的范圍:
<c:set?value="10000"?var="maxUser"?scope="application"/>
<c:set?value="20"?var="maxIdelTime"?scope="session"/>
<c:set?value="next.jsp"?var="nextPage"?scope="page"/>
------------------------------------------------------------------------------------------------------------------------------------------
Example4
<c:set?var="bid"?value="${param.bookId}"/>?
<jsp:setProperty?name="bookDB"?property="bookId"???value="${bid}"?/>
------------------------------------------------------------------------------------------------------------------------------------------
Example5
<%?Foo?foo?=?new?Foo();?pageContext.setAttribute("foo",?foo);?%>
<c:out?value="${foo.date}"/><br>?<c:set?target="${foo}"?property="day"?value="1"/>?
<c:out?value="${foo.date}"/>?
------------------------------------------------------------------------------------------------------------------------------------------
3.??<c:remove>
庫:Core(核心庫)
URI:http://java.sun.com/jsp/jstl/core
前綴:c?
描述:<c:remove>標簽用于刪除存在于scope中的變量。類似于<%session.removeAttribute(“name”)%>?、
<%request.removeAttribute(“name”)%>...
語法:?
<c:remove?var="varName"?[scope="{page|request|session|application}"]/>
屬性:
屬性名 | 描述 | 類型 | 是否接受動態值 | 是否支持EL | 是否 必須 | 默認值 | 說明 |
var | 變量名 | String | N | N | 是 | 無 | 欲移除變量的名稱 |
scope | 范圍 | String | N | N | 否 | page | var變量的JSP范圍;?若沒有指定,默認為全部查找 |
------------------------------------------------------------------------------------------------------------------------------------------
實例:
Example1
<c:remove?var="sampleValue"?scope="session"/>
${sessionScope.sampleValue}
------------------------------------------------------------------------------------------------------------------------------------------
Example2
<c:remove?var="username"?scope="session"/>
將username變量從session范圍移除。若我們不設定scope,則<c:remove>會移除所有范圍名稱為username
的數據。
------------------------------------------------------------------------------------------------------------------------------------------
4.<c:catch>
庫:Core(核心庫)
URI:http://java.sun.com/jsp/jstl/core
前綴:c?
描述:<c:catch>動作用于捕獲JSP元素在其體中拋出的異常,從而提供細粒度的錯誤控制,?此異常也可以保存為一個頁面作用域變量。當錯誤發生<c:catch>和</c:catch>之間時,只有<c:catch>和</c:catch>之間的程序會被中止忽略,但整個網頁不會被中止。它包含一個var屬性,是一個描述異常的變量,該變量可選。若沒有var屬性的定義,那么僅僅捕捉異常而不做任何事情,若定義了var屬性,則可以利用var所定義的異常變量進行判斷轉發到其他頁面或提示報錯信息。
語法:?
<c:catch?[var="var"]>?
//可能發生錯誤的部分
JSP?elements?
</c:catch>?
屬性:????
屬性名 | 描述 | 類型 | 是否接受動態值 | 是否支持EL | 是否 必須 | 默認值 | 說明 |
var? | 變量名 | String? | N | N | N | 無 | 用來存儲錯誤信息的變量 |
實例:
------------------------------------------------------------------------------------------------------------------------------------------
Example1
<c:catch?var="importException">?
<fmt:parseDate?value="${param.empDate}"?dateStyle="short"?/>?
</c:catch>?
<c:if?test="${importException?!=?null}">?
<jsp:forward?page="input.jsp">?
<jsp:param?name="msg"?value="Invalid?date?format"?/>?
</jsp:forward>?
</c:if>?
------------------------------------------------------------------------------------------------------------------------------------------
Example2
<c:catch?var="err">
?????????${param.sampleSingleValue[9]?==?3}
</c:catch>?
${err}
當“${param.sampleSingleValue[9]?==?3}”表達式有異常時,可以從var屬性“err”得到異常的內容,通常判斷“err”是否為null來決定錯誤信息的提示。
------------------------------------------------------------------------------------------------------------------------------------------
5.<c:if>
庫:Core(核心庫)
URI:http://java.sun.com/jsp/jstl/core
前綴:c?
描述:<c:if>動作僅當所指定的表達式計算為true時才計算其體。計算結果也可以保存為一個作用域Boolean變量。?
語法:
語法1:沒有體?
<c:if?test="booleanExpression?"?
?var="var?"?[scope="page?|request|session|application"]/>?
語法2:有體?
<c:if?test="booleanExpression">
?JSP?elements
</c:if>
屬性:
屬性名 | 描述 | 類型 | 是否接受動態值 | 是否支持EL | 是否 必須 | 默認值 | 說明 |
test? | 測試表達式? | boolean? | Y?
| Y | 是 | 無 | 如果表達式的結果為true則執行body,false則相反 |
var? | 變量名 | String? | N | N | 否 | 無 | 用來存儲test運算后的結果,即true或false?????????????????????????? |
scope? | 變量作用域 | String? | N | N | 否 | page | var變量的JSP范圍 |
實例:
<c:if?test="${empty?param.empDate}">?
<jsp:forward?page="input.jsp">?
<jsp:param?name="msg"?value="Missing?the?Employment?Date"?/>?
</jsp:forward>
?</c:if>
6.<c:choose>
庫:Core(核心庫)
URI:http://java.sun.com/jsp/jstl/core
前綴:c?
描述:<c:choose>動作用于控制嵌套<c:when>和<c:otherwise>動作的處理,它只允許第一個測試表達式計算為true的<c:when>動作得到處理;如果所有<c:when>動作的測試表達式都計算為false,則會處理一個<c:otherwise>動作。<c:choose>標簽沒有屬性,可以被認為是父標簽,<c:when>、<c:otherwise>將作為其子標簽來使用。
語法:
<c:choose>
body(<when>和<otherwise>)
</c:choose>
限制:
<c:choose>的本地內容只能有:
?.空白
?.1或多個<c:when>
?.0或多個<c:otherwise>
屬性:
無
實例:
----------------------------------------------------------------------------------------------------------------------------------------
Example1
<c:choose>?
<c:when?test="${product.onSale}">?
${product.salesPrice}?On?sale!?
</c:when>?
<c:otherwise>?
${product.price}?
</c:otherwise>?
</c:choose>?
---------------------------------------------------------------------------------------------------------------------------------------
Example2
<c:choose>
?<c:when?test="${condition1}">
??condition1?為?true
?</c:when>
?<c:when?test="${condition2}">
??condition2?為?true
?</c:when>
?<c:otherwise>
??condition1和conditon2都為false
?</<c:otherwise?>
說明:
在同一個<c:choose>中,假如所有的<c:when>的test都不為true時,則執行<c:otherwise>的本體內容。
在同一個<c:choose>中,假若有好幾個<c:when>都會true時,只能有一個<c:when>成立。
</c:choose>
----------------------------------------------------------------------------------------------------------------------------------------
7.<c:when>
庫:Core(核心庫)
URI:http://java.sun.com/jsp/jstl/core
前綴:c?
描述:<c:when>標簽等價于“if”語句,它包含一個test屬性,該屬性表示需要判斷的條件。
語法:
<c:when?test="testCondition">
Body?content
</c:when>
屬性:
屬性名 | 描述 | 類型 | 是否接受動態值 | 是否支持EL | 是否 必須 | 默認值 | 說明 |
test | 測試表達式 | boolean | Y | Y | 是 | 無 | 如果表達式的結果為true則執行body,false則相反? |
實例:
8.<c:otherwise>
庫:Core(核心庫)
URI:http://java.sun.com/jsp/jstl/core
前綴:c?
描述:<c:otherwise>標簽沒有屬性,它等價于“else”語句。
語法:
<c:otherwise>
conditional?block
</c:otherwise>
屬性:
無
實例:
<c:choose>、<c:when>、<c:otherwise>標簽綜合實例
<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>
jstl C標簽(Ⅱ)地址:http://m.tkk7.com/tangzurui/archive/2008/08/13/221657.html