jstl 庫標簽屬性

jopen 10年前發布 | 24K 次閱讀 JSP Java開發 JSTL

Core標簽庫,又被稱為核心標簽庫,該標簽庫的工作是對于JSP頁面一般處理的封裝。在該標簽庫中的標簽一共有14個,被分為了四類,分別是:

q         多用途核心標簽:<c:out><c:set><c:remove><c:catch>

q         條件控制標簽:<c:if><c:choose><c:when><c:otherwise>

q         循環控制標簽:<c:forEach><c:forTokens>

q         URL相關標簽:<c:import><c:url><c:redirect><c:param>

以下是各個標簽的用途和屬性以及簡單示例。

9.3.1 用于顯示的<c:out>標簽

<c:out>標簽是一個最常用的標簽,用于在JSP中顯示數據。它的屬性和描述如表9.3所示:

表9.3 <c:out>標簽屬性和說明

  • 屬性

    </td>

    描述

    </td> </tr>

    value

    </td>

    輸出到頁面的數據,可以是EL表達式或常量(必須)

    </td> </tr>

    default

    </td>

    當value為null時顯示的數據(可選)

    </td> </tr>

    escapeXml

    </td>

    當設置為true時會主動更換特殊字符,比如“&lt;,&gt;,&amp;”(可選,默認為true)

    </td> </tr> </tbody> </table>

    JSTL1.0的時候,在頁面顯示數據必須使用<c:out>來進行。然而,在JSTL1.1中,由于JSP2.0規范已經默認支持了EL表達式,因此可以直接在JSP頁面使用表達式。下面看一個示例。

    <c:out value="${sessionScope.anyValue}" default="no value" escapeXml="false"/>

    該示例將從Session查找名為“anyValue”的參數,并顯示在頁面,若沒有找到則顯示“no value”。

    9.3.2 用于賦值的<c:set>標簽

    <c:set>標簽用于為變量或JavaBean中的變量屬性賦值的工作。它的屬性和描述如表9.4所示:

    表9.4 <c:set>標簽屬性和說明

  • 屬性

    </td>

    描述

    </td> </tr>

    value

    </td>

    值的信息,可以是EL表達式或常量

    </td> </tr>

    target

    </td>

    被賦值的JavaBean實例的名稱,若存在該屬性則必須存在property屬性(可選)

    </td> </tr>

    property

    </td>

    JavaBean實例的變量屬性名稱(可選)

    </td> </tr>

    var

    </td>

    被賦值的變量名(可選)

    </td> </tr>

    scope

    </td>

    變量的作用范圍,若沒有指定,默認為page(可選)

    </td> </tr> </tbody> </table>

    當不存在value的屬性時,將以包含在標簽內的實體數據作為賦值的內容。下面看一個示例:

    <c:set value="this is andy" var="oneString"/>

    ${oneString} <br>

    該示例將為名為“oneString”的變量賦值為“this is andy”,其作用范圍為page

    9.3.3 用于刪除的<c:remove>標簽

    <c:remove>標簽用于刪除存在于scope中的變量。它的屬性和描述如表9.5所示:

    表9.5 <c:remove>標簽屬性和說明

    屬性

    </td>

    描述

    </td> </tr>

    var

    </td>

    需要被刪除的變量名

    </td> </tr>

    scope

    </td>

    變量的作用范圍,若沒有指定,默認為全部查找(可選)

    </td> </tr> </tbody> </table>

    下面看一個示例:

    <c:remove var="sampleValue" scope="session"/>

    ${sessionScope.sampleValue} <br>

    該示例將存在于Session中名為“sampleValue”的變量刪除。下一句EL表達式顯示該變量時,該變量已經不存在了。

    9.3.4 用于異常捕獲的<c:catch>標簽

    <c:catch>標簽允許在JSP頁面中捕捉異常。它包含一個var屬性,是一個描述異常的變量,改變量可選。若沒有var屬性的定義,那么僅僅捕捉異常而不做任何事情,若定義了var屬性,則可以利用var所定義的異常變量進行判斷轉發到其他頁面或提示報錯信息。看一個示例。

    <c:catch var="err">

             ${param.sampleSingleValue[9] == 3}

    </c:catch>

    ${err}

    當“${param.sampleSingleValue[9] == 3}”表達式有異常時,可以從var屬性“err”得到異常的內容,通常判斷“err”是否為null來決定錯誤信息的提示。

    9.3.5 用于判斷的<c:if>標簽

    <c:if>標簽用于簡單的條件語句。它的屬性和描述如表9.6所示:

    表9.6 <c:if>標簽屬性和說明

    屬性

    </td>

    描述

    </td> </tr>

    test

    </td>

    需要判斷的條件

    </td> </tr>

    var

    </td>

    保存判斷結果true或false的變量名,該變量可供之后的工作使用(可選)

    </td> </tr>

    scope

    </td>

    變量的作用范圍,若沒有指定,默認為保存于page范圍中的變量(可選)

    </td> </tr> </tbody> </table>

    下面看一個示例:

    <c:if test="${paramValues.sampleValue[2] == 12}" var="visits">

          It is 12

    </c:if><br>

    ${visits} <br>

    該示例將判斷request請求提交的傳入控件數組參數中,下標為“2”的控件內容是否為“12”,若為12則顯示“It is 12”。判斷結果被保存在page范圍中的“visits”變量中。  

    9.3.6 用于復雜判斷的<c:choose><c:when><c:otherwise>標簽

    這三個標簽用于實現復雜條件判斷語句,類似“if,elseif”的條件語句。

    q         <c:choose>標簽沒有屬性,可以被認為是父標簽,<c:when><c:otherwise>將作為其子標簽來使用。

    q         <c:when>標簽等價于“if”語句,它包含一個test屬性,該屬性表示需要判斷的條件。

    q         <c:otherwise>標簽沒有屬性,它等價于“else”語句。

    下面看一個復雜條件語句的示例。

    <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>

    該示例將判斷request請求提交的傳入控件數組參數中,下標為“2”控件內容是否為“11”或“12”或“13”,并根據判斷結果顯示各自的語句,若都不是則顯示“not 11 1213”。

    9.3.7 用于循環的<c:forEach>標簽

    <c:forEach>為循環控制標簽。它的屬性和描述如表9.7所示:

    表9.7 <c:forEach>標簽屬性和說明

    屬性

    </td>

    描述

    </td> </tr>

    items

    </td>

    進行循環的集合(可選)

    </td> </tr>

    begin

    </td>

    開始條件(可選)

    </td> </tr>

    end

    </td>

    結束條件(可選)

    </td> </tr>

    step

    </td>

    循環的步長,默認為1(可選)

    </td> </tr>

    var

    </td>

    做循環的對象變量名,若存在items屬性,則表示循環集合中對象的變量名(可選)

    </td> </tr>

    varStatus

    </td>

    顯示循環狀態的變量(可選)

    </td> </tr> </tbody> </table>

    下面看一個集合循環的示例。

    <%ArrayList arrayList = new ArrayList();

                       arrayList.add("aa");

                       arrayList.add("bb");

                       arrayList.add("cc");

    %>

    <%request.getSession().setAttribute("arrayList", arrayList);%>

    <c:forEach items="${sessionScope.arrayList}" var="arrayListI">

             ${arrayListI}

    </c:forEach>

    該示例將保存在Session中的名為“arrayList”的ArrayList類型集合參數中的對象依次讀取出來,items屬性指向了ArrayList類型集合參數,var屬性定義了一個新的變量來接收集合中的對象。最后直接通過EL表達式顯示在頁面上。下面看一個簡單循環的示例。

    <c:forEach var="i" begin="1" end="10" step="1">

          ${i}<br />

    </c:forEach>

    示例從“1”循環到“10”,并將循環中變量“i”顯示在頁面上。

    9.3.8 用于分隔字符的<c:forTokens>標簽

    <c:forTokens>標簽可以根據某個分隔符分隔指定字符串,相當于java.util.StringTokenizer類。它的屬性和描述如表9.8所示:

    表9.8 <c:forTokens>標簽屬性和說明

  • 屬性

    </td>

    描述

    </td> </tr>

    items

    </td>

    進行分隔的EL表達式或常量

    </td> </tr>

    delims

    </td>

    分隔符

    </td> </tr>

    begin

    </td>

    開始條件(可選)

    </td> </tr>

    end

    </td>

    結束條件(可選)

    </td> </tr>

    step

    </td>

    循環的步長,默認為1(可選)

    </td> </tr>

    var

    </td>

    做循環的對象變量名(可選)

    </td> </tr>

    varStatus

    </td>

    顯示循環狀態的變量(可選)

    </td> </tr> </tbody> </table>

    下面看一個示例。

    <c:forTokens items="aa,bb,cc,dd" begin="0" end="2" step="2" delims="," var="aValue">

             ${aValue}

    </c:forTokens>

    需要分隔的字符串為“aa,bb,cc,dd”,分隔符為“,”。begin屬性指定從第一個“,”開始分隔,end屬性指定分隔到第三個“,”,并將做循環的變量名指定為“aValue”。由于步長為“2”,使用EL表達式${aValue}只能顯示“aa cc”。

    9.3.9 用于包含頁面的<c:import>

    <c:import>標簽允許包含另一個JSP頁面到本頁面來。它的屬性和描述如表9.9所示:

    表9.9 <c:import>標簽屬性和說明

    屬性

    </td>

    描述

    </td> </tr>

    url

    </td>

    需要導入頁面的URL

    </td> </tr>

    context

    </td>

    Web Context該屬性用于在不同的Context下導入頁面,當出現context屬性時,必須以“/”開頭,此時也需要url屬性以“/”開頭(可選)

    </td> </tr>

    charEncoding

    </td>

    導入頁面的字符集(可選)

    </td> </tr>

    var

    </td>

    可以定義導入文本的變量名(可選)

    </td> </tr>

    scope

    </td>

    導入文本的變量名作用范圍(可選)

    </td> </tr>

    varReader

    </td>

    接受文本的java.io.Reader類變量名(可選)

    </td> </tr> </tbody> </table>

    下面看一個示例。

    <c:import url="/MyHtml.html" var="thisPage" />

    <c:import url="/MyHtml.html" context=”/sample2” var="thisPage"/>

    <c:import url="www.sample.com/MyHtml.html" var="thisPage"/>

    該示例演示了三種不同的導入方法,第一種是在同一Context下的導入,第二種是在不同的Context下導入,第三種是導入任意一個URL

    9.3.10 用于得到URL地址的<c:url>標簽

    <c:url>標簽用于得到一個URL地址。它的屬性和描述如表9.10所示:

    表9.10 <c:url>標簽屬性和說明

  • 屬性

    </td>

    描述

    </td> </tr>

    value

    </td>

    頁面的URL地址

    </td> </tr>

    context

    </td>

    Web Context該屬性用于得到不同Context下的URL地址,當出現context屬性時,必須以“/”開頭,此時也需要url屬性以“/”開頭(可選)

    </td> </tr>

    charEncoding

    </td>

    URL的字符集(可選)

    </td> </tr>

    var

    </td>

    存儲URL的變量名(可選)

    </td> </tr>

    scope

    </td>

    變量名作用范圍(可選)

    </td> </tr> </tbody> </table>

    下面看一個示例:

    <c:url value="/MyHtml.html" var="urlPage" />

    <a href="${urlPage}">link</a>

    得到了一個URL后,以EL表達式放入<a>標簽的href屬性,達到鏈接的目的。

    9.3.11 用于頁面重定向的<c:redirect>標簽

    <c:redirect>用于頁面的重定向,該標簽的作用相當于response.setRedirect方法的工作。它包含urlcontext兩個屬性,屬性含義和<C:url>標簽相同。下面看一個示例。

    <c:redirect url="/MyHtml.html"/>

    該示例若出現在JSP中,則將重定向到當前Web Context下的“MyHtml.html”頁面,一般會與<c:if>等標簽一起使用。

    9.3.12 用于包含傳遞參數的<c:param>標簽

    <c:param>用來為包含或重定向的頁面傳遞參數。它的屬性和描述如表9.11所示:

    表9.11 <c:param>標簽屬性和說明

    屬性

    </td>

    描述

    </td> </tr>

    name

    </td>

    傳遞的參數名

    </td> </tr>

    value

    </td>

    傳遞的參數值(可選)

    </td> </tr> </tbody> </table>

    下面是一個示例:

    <c:redirect url="/MyHtml.jsp">

    <c:param name="userName" value=”RW” />

    </c:redirect>

    該示例將為重定向的“MyHtml.jsp”傳遞指定參數“userName=’RW’”。

     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
  • sesese色