JSP-jstl標籤庫_jp

JSTL:第三方標籤庫,需要導入jar包纔可以使用。
     該標籤庫可以完成更復雜的功能,比如可以
     完成遍歷集合和數組,條件判斷,循環等功能。
   目的:不希望在jsp頁面中出現java邏輯代碼。
   JSTL標籤庫可分5類:核心標籤庫
             I18N格式化標籤庫
             SQL標籤庫
             XML標籤庫
             函數標籤庫
主要講核心標籤庫共13個:分爲四類
standard.jar 標準jar包,定義規範
jstl.jar   具體實現jar包
注意:1)web工程導包需要將包copy到WEB-INF下lib文件夾中。
      2)在jsp頁面中導入標籤庫
         taglib

WebContent
  文件夾:jstl
     jsp:  jstl.jsp
第一類:表達式控制標籤
1、<c:out> 輸出變量到JspWriter輸出流中
1) 語法1:<c:out value="result"
    [escapeXml]="{true|false}"
    [default="defaultValue"]/>
注意:a)如果result爲null,則輸出default中的值
      b)escapeXml:設定是否轉換特
      殊字符(如&lt;、&gt;等一些轉
      義字符),在默認值爲true的情況
      下直接在輸出&lt;的,如果改爲
      false將會進行轉義輸出“<”等。
2) 語法2:<c:out value="result"
    [escapeXml]="{true|false}">
    default value</c:out>

例如:  value可以使用el表達式
      <c:out value="${student.address.country}"/>

2、<c:set>
該標籤用於在某個範圍中設置指定變量,
或者設置某個對象的屬性
1) 在scope中設置變量(value指定)、名字由var指定
<c:set var="name" value="attrValue"
    [scope="page|...."]/>
          注意: var指定的值-->屬性名
       value指定的值-->屬性值
          value可以通過el標籤來取到數據,如:value="${user }"
相對於:scope.setAttribute("name","attrValue");

2) 帶有一個Body體
<c:set var="varName" [scope]>
        body content
</c:set>
注:指定varName變量的值爲body content.
scope指定變量存放的範圍,默認爲page
    
3) 設置某個特定對象的一個屬性(attribute)
<c:set target="${student}"
    property="name" value="terry"/>
注:把一個值爲terry賦值給指定的student對象的name屬性,
相當與setter()方法。
4) 設置某個特定對象的一個屬性,並且標籤帶有一個body
<c:set target="${target}"
 property="propertyName">  body content
</c:set>
注意:   1)scope屬性不能在這裏使用。
    2)把一個值爲body content賦值給指定
的target對象的propertyName屬性。

3、<c:remove>
<c:remove var="varName" [scope="page|...."]/>
相當於 scope.removeAttribute("varName");
在指定scope中根據屬性名varName來刪除屬性值
 如果沒有指定scope,那麼依次從page、request、session和application範圍中
根據該屬性名去刪除屬性值。

4、<c:catch> 捕獲由嵌套在它裏面的代碼拋出的異常
    語法:<c:catch [var="varName"]>
        nested actions
     </c:catch>
    var:用於存放這個異常對象的屬性名,
        通過它可以輸出異常對象的所有信息。
    scope:默認爲page。

第二類:流程控制標籤
5、<c:if>
語法:  
<c:if test="condition"
 var="varName" [scope]>
body content</c:if>
var爲存放布爾型變量的屬性名,
scope爲該變量的存放範圍。

6、<c:choose>
用於條件選擇,它和<c:when>
          以及<c:otherwise>一起使用
語法:   <c:choose>
     (<when> and <otherwise>)
</c:choose>
注意: body體內容只能由以下的元素構成
    1) 空格
    2) 0個或者多個<when>子標籤,
    <when>必須出現在<c:choose>和<c:ohterwise>之間
    3) 0個或者多個<ohterwise>

7、<c:when>
代表了<c:choose>的一個分支
語法: <c:when test="condition">
 body content
</c:when>
注意: 必須以<c:choose>作爲它的父標籤
      必須在<c:otherwise>之前出現

8、<c:otherwise>
<c:choose>的最後的選擇
語法: <c:otherwise>
    body
</c:otherwise>    
注意: 必須以<c:choose>作爲父標籤
     必須是<c:choose>的最後分支

第三類:循環標籤
9、迭代標籤(用來迭代集合、數組、枚舉
        或者迭代器(Iterator))
1) <c:forEach>
語法1:     <c:forEach [var="varName"]
    items="collection/array/Enumaration/Iterator"
    [varStatus="varStatusName"]
    [begin="begin"] [end="end"]
    [step="step"]>
    body
    </c:forEach>

語法2: 迭代固定的次數(做普通的循環輸出,類似for循環)
<c:forEach [var="varName"]     
    [varStatus="varStatusName"]
    begin="begin" end="end"
    [step="step"]>
body content
</c:forEach>

名字        類型        描述
var        String        存放變量(迭代出來的)的屬性名(scope爲page)
items         任何支持的類型    將要迭代itmes的集合/數組/枚舉/Iterator
varStatus    String        迭代的狀態,可以訪問迭代的自身信息,如索引號
begin        int        items從index[begin]開始迭代
                沒有指定items從index開始做循環
end         int         items從index[end]結束
                沒有指定items從end結束
step        int        迭代的步長(>0)

注意:varStatus中有index(索引),
   count(循環次數)
      ,first(是否是第一個位置),
      last(是否爲最後一個位置)

2) <c:forTokens>類似java中的StringTokenizer
   這個標籤專門用於處理TokenString的迭代,
可以指定一個或者多個分隔符號(delimiters)
語法: <c:forTokens items="stringOfTokens"
         delims="delimiters"
    [var="varName"]                                     [varStatus="varStatusName"]
    [begin="begin"] [end="end"]
    [step="step"]>
        body content
 </c:forTokens>

第四類:URL操作標籤
10、URL相關的標籤
1) <c:import>導入一個基於URL的資源
<c:import url="url" [var="varName"] [scope]>
    [<c:param/>]*
</c:import>
var:存放URL資源內容的屬性名
scope:存放的範圍

該標籤可以把其他靜態或動態文件包含到本JSP頁面。
同<jsp:include>的區別爲:只能包含同一個web應用中的文件。
而<c:import>可以包含其他web應用中的文件,
甚至是網絡上的資源。
url分爲
絕對路徑: http://localhost:8080/jsp/a.jsp(web應用程序外部訪問)
相對路徑: a.jsp(web應用程序內部訪問)

2) <c:url>
用於構造URL,主要用途是URL重寫
語法: <c:url value="url"
    [var="varName"] [scope]>
    [<c:param/>]*
</c:url>
var:存放重寫後的URL的屬性名
scope:存放的範圍
一般和a連用
如<a href="varName">test</a>

3) <c:redirect>
把客戶的請求重定向到另一個資源
語法: <c:redirect url="url">
      [<c:param/>]*
 </c:redirect>
注意:重定向的標籤已經對url重寫過了
在重定向之前這個url先被重寫,重定向的是被重寫後的url。

注意: <c:url>和<c:redirect>也可以使用絕對路徑http://localhost:8080/jsp/a.jsp(不能使用/jsp/a.jsp),但是url不能被重寫,只有在使用相對路徑後url才能被重寫。

4) <c:param>
在<c:import>、<c:url>和<c:redirect>中添加請求的參數
語法1: <c:param name="name" value="value"/>
語法2: <c:param name="name">
    parameter value
</c:param>

發佈了30 篇原創文章 · 獲贊 6 · 訪問量 4810
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章