JSTL標籤庫學習總結

 

最近沒什麼項目,部門經理開會讓我們複習學習EE的知識,每個人分一部分自行研究總結,今天總結了一下JSTL標籤的使用,方便以後工作中用到時複習使用。

 

一、爲什麼要使用JSTL

JSP中,EL表達式是個很方便的工具,但是EL表達式功能很有限制(例如不能遍歷集合等)JSTL作爲最基本的標籤庫,JSTL庫中提供了一系列的JSP標籤,實現了最基本的功能,例如集合的遍歷、數據的輸出、字符串的處理、數據的格式化等。

二、JSTL的構成

JSTL包括corefntsqlXML4個標籤庫,以及一個fn方法庫。在Java EE 1.4之前,JSP中使用JSTL需要添加JSTL的類庫,從Java EE 5開始,內置JSTL的支持,可以直接使用。

三、JSTLcore標籤庫

Core標籤庫是JSTL的核心標籤庫,或者說是基本標籤庫,實現了最基本的功能。在使用core標籤庫下的標籤時,需要在JSP文件中引入標籤庫,如:<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>

以下爲core標籤庫下各主要標籤的使用介紹:

1<c:out/>標籤:JSTL中使用out標籤輸出數據。

       <c:out value=”${param.action}”></c:out>

       注:out標籤還有另外兩個屬性:defaultescapeXml。如果value屬性的值不存在,會輸出default屬性的值。如果excapeXmltrue,則會對輸出的內容進行XML編碼。

2<c:if/>標籤條件判斷的標籤,判斷條件寫在test屬性中。

       <c:if test=”${param.action == “add”}”>

              ……..

       </c:if>

       <c:if test=”${param.action == “edit”}”>

              ……..

       </c:if>

3<c:choose/><c:when/><c:otherwise>標籤

       <c:choose>

              <c:when test=”${param.aciton}”>

                     When標籤輸出

             </c:when>

              <c:otherwise>

                     Otherwise標籤輸出

              </c:otherwise>
       </c:choose>

4<c:forEach/>標籤爲循環標籤,items屬性裏是集合類對象或者是數組。

       顯示偶數:

       <c:forEach var=”num” begin=”2” end=”100” step=”2”>

              <div>${num}</div>

       </c:forEach>

       遍歷List

       <c:forEach istem=”${personList}” var=”person”>

              <tr>

                     <td>${person.id}</td>

                     <td>${person.name}</td>

                     <td>${person.age}</td>

                     <td>${person.sex}</td>

                     <td>${person.city}</td>

                     <td>${person.birthday}</td>

              </tr>

       </c:forEach>

       遍歷Map對象:

       <c:forEach var=”item” items=”${header}”>

              <tr>

                     <td>${item.key}</td>

                     <td>${item.value}</td>

              </tr>

       </c:forEach>

       <c:forEach>標籤的varStatus屬性可以實現隔行變色的功能。如下:

       <c:forEach item=”${persoinList}” vae=”person” varStatus=”varStatus”>

              <tr bgcolor=”${varStatus.index % 2 == 1 ? ‘#EFEFEF’ : ‘#FFFFFF’}”>

                     <td>${varStatus.current.id}</td>

                     …………

              </tr>

       </c:forEach>

       注:varStatus的屬性:indexcountfistlastcurrentbeginendstep

5<c:forTokens/>標籤爲循環標籤,items屬性裏面是字符串,會被delims屬性分割成多個字符串,forTokens就是遍歷這些字符串。

     <c:forTokens items=”Jane,Tomi,Andy,Hedrix,McCarteny,Lenno,Court,Ben” delims=”,” var=”item” varStatus=”varStatus” begin=”1” end=”7” step=”2”>

            <tr>

                   <td>${varStatus.index}</td>

                   <td>${item}</td>

            </tr>

     </c:forTokens>

6<c:set/>實現計數器,set標籤既可以聲明一個不存在的對象,也可以修改一個已經存在的對象,還可以只修改該對象的某個屬性,前提是該屬性是可寫的(即有對應的setter方法)

     <c:set var=”totalCount” value=”${totalCount + 1}” scope=”application”></c:set>

     <c:set var=”count” value=”${count + 1}” scope=”session”></c:set>

     本網站總訪問人數:${totalCount} <br/>

     其中您的訪問次數:${count} <br/>

     注:target作用類似於var,不同的是target只能用來操作Java Bean或者Maptarget只能修改已存在的Java Bean的屬性或者Map的內容,而不能創建,因此如果targetnull,會拋出異常。Targetvar二者不能同時使用。

7<c:remove/>標籤與set標籤作用正好相反。可以從pagerequestsessionapplication等刪除所有類型的數據。

     <% request.setAttribute(“somemap”, new HashMap()); %>

     <c:remove var=”somemap” />

     ${somemap == null ? ‘somemap 已經被刪除’ : ‘somemap 沒有被刪除’}

8<c:catch/>捕捉異常

     <c:catch var=”e”>

            <c:set target=”someBean” property=”someProperty” value=”Some Value”>

            </c:set>

     </c:catch>

     <c:if test=”${e != null}”>

            程序拋出了異常${e.class.name},原因:${e.message}

     </c:if>

9<c:import/>導入網絡資源

     <c:import var=”baidu” url=”http://www.baidu.com” charEncoding=”gbk” cope=”request”/>

   Baidu的源代碼爲:<br/><br/>

     <c:out value=”${ baidu}” escapeXml=”true”></c:out>

10<c:url/>標籤,JSP中,如果客戶瀏覽器不支持Cookie,則可以使用request.encodeURL()方法對URL進行編碼,使該客戶也能使用Session功能,這叫做URL重寫。url標籤的作用就是實現類似功能。

     <c:url value=”/images/bg.gif”>

11<c:redirect/>標籤用於實現Redirect重定向功能。

     <c:redirect url=”http://www.baidu.com” ></c:redirect>

12<c:param/>標籤,有時候重定向到頁面需要參數,這時候可以配合param標籤一塊使用。Param標籤專門用於設置參數。

     <c:redirect url=”http://www.baidu.com” >

            <c:param name=”wd” value=”音樂”></c:param>

            <c:param name=”cl” value=”3”></c:param>

</c:redirect>

四、JSTLfnt標籤庫

Fnt的標籤爲輔助性功能標籤。Fnt英文全稱爲format。在使用fnt標籤庫下的標籤時,需要在JSP文件中引入標籤庫,如:<%@ taglib uri=”http://java.sun.com/jsp/jstl/fnt” prefix=”fnt”%>

以下爲fnt標籤庫下各主要標籤的使用介紹:

1<fnt:requestEncoding/>設置編碼

       <fmt:requestEncoding value=”UTF-8” />

2<fmt:setLocale/>顯示所有地區的數據格式,用於設定Locale

       <fmt:setLocale value=”${locale}”/>

3<fmt:timeZone/>顯示全球時間,Locale只是影響到時間的格式,TimeZone會影響到時間的值,timeZone標籤只對標籤內的代碼有效。

     <fmt:timeZone value=”Asia/Shanghai”>

       中間爲timeZone標籤生效的作用域

</fmt:timeZone>

4<fmt:setTimeZone>設置時區,如果需要設置全局的Time Zone,需要使用setTimeZon標籤。

5<fmt:bundle/><fmt:message/><fmt:param/>資源國際化

     Java中使用ResourceBundle類解決i18n(國際化)的問題,把所有的中文提示都放在messages_zh_CN.properties文件中。JSTL提供了bundle標籤,message標籤與param標籤來實現該功能。

     <fmt:bundle basename=”messages”>

       <fmt:message key=”prompt.hello”>

              <fmt:param value=”yiyu986”></fmt:param>

       </fmt:message> <br/>

       <fmt:message key=”prompt.greeting”></fmt:message>

     </fmt:bundle>

6<fmt:setBundle/>標籤,bundle標籤只對標籤內部的message標籤有效,而setBundle標籤對所有的message標籤有效。

     <fmt:setBundle basename=”message” var=”resource” scope=”request”/>

     <fmt:message bundle=”{resource}” key=”prompt.hello”>

              <fmt:param>yiyu986</fmt:param>

     </fmt:message>

     <fmt:message bundle=”${resource}” key=”prompt.greeting”></fmt:message>

7<fmt:formatNumber/>顯示不同地區的各種數據格式,formatNumber標籤能夠根據不同的Locale輸出不同的格式。

8<fmt:parseNumber/>解析數字,parseNumber標籤與formatNumber標籤功能剛好相反,formatNumber把數字轉爲字符串,parseNumber標籤把字符串轉爲數字。

     <fmt:parseNumber value=”1,000”></fmt:parseNumber> <br/>

     <fmt:parseNumber value=”1,000” parseLocale=”de”></fmt:parseNumber> </br>

9<fmt:formatDate/>格式化日期,用於將日期格式化爲指定格式的字符串。

     <jsp:useBean id=”currDate” class=”java.util.Date”></jsp:useBean>

     <fmt:formatDate value=”${currDate}” />

     <fmt:formatDate value=”${currDate}” pattern=”yyyy/MM/dd HH:mm:ss:sss”>

     </fmt:formatDate>

10<fmt:parseDate/>解析日期,將字符串轉化爲時間

     <fmt:parseDate value=”2008-12-12”></fmt:parseDate>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章