JSP標準標籤庫——JSTL

來源:互聯網
上載者:User

JSP標準標籤庫——JSTL

JSTL是實現Web應用程式中常見的通用功能的定製標籤庫集。

JSTL分為5大類:

1、 核心標籤庫

2、 國際化/格式化標籤庫

3、 資料庫標籤庫

4、 XML標籤庫

5、 Function標籤庫(Functions)

Core標籤庫

核心標籤庫主要包括通用標籤、條件標籤、迭代標籤和與URL相關的標籤

在使用Core標籤庫的JSP的開始部分,添加代碼:%@tagliburi=”http://java.sun.com/jsp/jstl/core” prefix=”c”%

通用標籤:

•         <c:out>標籤

–       用於將運算式的結果輸出到當前的JspWriter對象中。其功能類似於JSP的運算式<%=  %>,或者EL運算式${}。

–       文法
<c:out value=“value” [default=“default value”] [escapeXml=“true|false”]/>
<c:out value=“value”  [escapeXml=“true|false”]><!--為true時,對輸出內容中的<、>、“、‘和&字元進行轉義,分別轉成&lt、&gt、&#039、&#034和&amp-->
           default value
</c:out>

Eg:

    <%

    request.setAttribute("user","lisi");

   %>

<c:out value="helloworld"/><br/>

<c:out value="${userName}"default="xxxx"/><br/>

<c:out value="<h1>你好!!!</h1>" escapeXml="false"/><br/>

<c:out value="${userName}">常值內容</c:out>

•         <c:set>標籤

–       <c:set>標籤用於設定JSP頁面的各種域範圍中的變數,或者設定java.util.Map對象或JavaBean對象的屬性。

–       文法

•         <c:set value=“value”var=“name” [scope=“範圍”]/>將value的值儲存到名為name的變數中,同時name變數儲存到選定的作用範圍中。例如,
<c:set value=“sunwk” name=“username” scope=“session”/>

範圍可以是:可以是page|request|session|application

•         <c:set var=“name” [scope=“範圍”] >
      value
</c:set>
將標籤體中的內容儲存到名為name的變數中,同時name變數儲存到選定的作用範圍中。例如,
<c:set var=“username” scope=“session”>
    sunwk
</c:set>

•         <c:set value=“value”target=“target” property=“propertyName” />將value的值儲存到target對象的propertyName屬性中。

•         <c:set target=“target”property=“propertyName”>
      value
</c:set>
將標籤體的內容儲存到target對象的propertyName屬性中。

Eg:

<c:set value="sunwukong"var="user" scope="request"></c:set>

${user}<br/>

<c:set var="user"scope="request">

zhubajie

</c:set>

${user }<br/>

<%

    Map map=new HashMap();

    request.setAttribute("map",map);

 %>

 <!-- 給指定範圍內的某一個集合去設定索引值對 -->

 <c:set value="tangseng"property="aaa" target="${map}"></c:set>

${map.aaa }<br/>

<!-- 給javaBean裡的屬性賦值 -->

<%

    Person p=new Person();

    request.setAttribute("person",p);

 %>

 <c:set value="Jerry"property="name" target="${person}"></c:set>

${person.name}

•         <c:remove>標籤

–       <c:remove>標籤用於移除JSP頁面中指定域範圍中的變數。

–       文法
<c:remove var=“name” [scope=“範圍”]/>

<c:remove var="person"scope="request"/>

<c:out value="${person.name}" default="沒有該人"/>

•         <c:catch>標籤

–       <c:catch>標籤用於捕獲嵌套在標籤體內的內容拋出的異常對象,並將異常資訊儲存到變數中。

–       文法
<c:catch [var=“name”]>
           body content
</c:catch>
將可能發生異常的代碼放到該標籤中,如果發生異常,異常資訊儲存到name變數中。

<!-- catch捕獲異常,將可能發生異常的內容放在catch中

,異常對象會以屬性的方式儲存在某個範圍中,

var是在指定範圍記憶體異常對象的內容 -->

<c:catch var="myex">

<%

    int i=10/0;

 %>

</c:catch>

異常:<c:out value="${myex }"></c:out><br/>

異常的原因是:<c:out value="${myex.cause}"></c:out><br/>

異常訊息:<c:out value="${myex.message}"></c:out>

 異常堆棧軌跡:<c:out value="${myex.stackTrace}"></c:out>

條件標籤

•         <c:if>標籤

–       <c:if>標籤用來做條件判斷,功能類似於JSP中的<%if(boolean){}%>。

注意:對於判斷標籤的test屬性,可以使用一些關係操作符,如==、!=、<、>、>=、<=等,也可以將這些關係操作符用eq、ne、lt、le、gt、ge取代。

Eg:

<c:if test="${userName==null }"var="xx" scope="request">

 該使用者沒有登入

 </c:if>

•         <c:choose>、<c:when>、<c:otherwise>標籤

–       <c:choose>標籤用於提供條件選擇的上下文,它必須與<c:when>和<c:otherwise>標籤一起使用。

–       <c:when>作為<c:choose>的子標籤,<c:when>有一個test屬性,該屬性的值為布爾型,如果test的值為true,則執行<c:when>標籤體的內容。

–       <c:otherwise>標籤沒有屬性,它必須作為<c:choose>標籤的最後分支出現。

Eg:

<%

    request.setAttribute("age",18);

  %>

  <c:choose>

    <c:when test="${age>70}">

        老年人

    </c:when>

    <c:when test="${age<=70&& age>35}">

        中年人

    </c:when>

    <c:when test="${age<=35&& age>18 }">

        青年人

    </c:when>

    <c:when test="${age<=18&& age>0}">

        少年或兒童

    </c:when>

    <c:otherwise>

        輸入錯誤

    </c:otherwise>

 

  </c:choose>

迭代標籤:

•         <c:forEach>標籤

–       <c:forEach>標籤用於對包含了多個對象的集合進行迭代,重複執行它的標籤體,或者重複迭代固定的次數。

注意:

Ø      items屬性並不是一定要有的屬性,但是當沒有使用items屬性時,就一定要使用begin和end屬性。

Ø      varStatus:用來儲存現有遍曆計數相關的資訊。例如,如果varStatus=“i”,那麼會將相應資訊放到名稱為i的變數中,i變數有四個屬性值,index、count、first和last。

Index是現在操作的成員的索引

Count是操作成員總數

First是所操作成員是否是第一個成員

Last是所操作成員是否是最後一個成員

Eg:

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

    helloworld

 </c:forEach><br/>

 Eg2:按照表格類型顯示,奇數行和偶數行顏色不同,當游標放到欄位上時,整個欄位會變色

<head>

    <style type="text/css">

    .even{

    background-color:#ffff99;

    color:#ff0000;}

    .odd{

    background-color:#ffff00;

    color:#ff0000;}

    tr:hover{

    background-color:#0000ff;}

    </style>

</head>

<body>

<%

    Listlist=new ArrayList();

    list.add("aaa");

    list.add("bbb");

    list.add("ccc");

    list.add("ddd");

    list.add("eee");

    list.add("fff");

    list.add("ggg");

    list.add("hhh");

    list.add("iii");

    list.add("jjj");

    request.setAttribute("list",list);

  %>

  <!--varStatus存的是狀態物件,在迭代過程中的狀態資訊,不支援EL運算式,狀態資訊有4個屬性:index,count,first和last -->

 <table border="1"width="50%">

  <c:forEach items="${list}"var="str" begin="1"end="9" step="1"varStatus="status">

 <!--status.count%2!=0判斷是否是奇數行,奇數行——even,偶數行——odd -->

  <tr class="${(status.count%2!=0)?'even':'odd'}">

  <td>${str}</td>

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

  <td>${status.first}</td>

  <td>${status.last}</td>

<td>${status.count}</td>

</tr>

  </c:forEach>

  </table>

</body>

•         <c:forTokens>標籤

–        <c:forTokens>標籤用來瀏覽一字串中所有的成員,其成員是由定義符號(Delimiters)所分隔的。

Eg:

<c:forTokens items=“a:b:c:d” delims=“:”var=“token”>

       <c:outvalue=“${token}” /> <br>

</c:forTokens>

注意:這個標記的使用效果相當於java.util.StringTokenizer類。將字串“a:b:c:d”以“:”分隔字元分開,token是迴圈到當前所分割得到的字串。

URL相關的標籤:

<c:import>標籤:可以把其他靜態或者動態檔案包含到本身的JSP頁面中。與JSP的動作<jsp:include>的區別在於:<jsp:include>只能包含和自己在同一個Web應用中的檔案,<c:import>不僅能包含和自己在同一個Web應用下的檔案,還可包含其他Web應用或其他網站的檔案。

Eg:

  <!-- 如果寫var屬性的話,MyJsp.jsp中的內容會包含到secondPage中,必須用EL運算式在本頁顯示一下 -->

 <c:import url="/MyJsp.jsp"var="secondPage"/>

 ${secondPage}

•         <c:url>標籤

–        <c:url>標籤在JSP頁面構造一個URL,它提供了3個功能元素,它們可以在URL前面附加當前Servlet內容相關的名稱;可以為會話管理重寫URL;可以對請求參數名稱和值進行URL編碼,這些功能在為J2EE Web應用程式構造URL時特別有用。

•         <c:param>標籤

–        <c:param>標籤的作用是為一個URL添加請求參數,在前面的<c:url>、<c:redirect>和<c:import>標籤中都已經見過<c:param>的用法。

<%session.setAttribute("xxxxx","xxxxx"); %>

 

 <%

    session.setAttribute("user","www");

  %>

 <!-- value構建地址,以var屬性名稱來儲存到範圍,scope儲存的範圍 -->

 <!-- index.jsp加/,下面再顯示時,會顯示詳細的路徑 -->

 <c:url value="/index.jsp"var="strUrl" scope="request">

 <!-- c:param給url附加參數 -->

    <c:param name="pageNo" value="2"></c:param>

 </c:url>

 ${strUrl}

 <a href="${strUrl}">首頁</a>

 <a href="<c:url value='/index.jsp'/>">首頁</a>

 

•         <c:redirect>標籤

–        <c:redirect>標籤用於向使用者的瀏覽器發送HTTP重新導向響應,它是JSTL中與 javax.servlet.http.HttpServletResponse的sendRedirect()方法功能相當的標記。

Eg:

<!-- url重新導向的地址 -->

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

   

</c:redirect>

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.