IT兄弟連 JavaWeb教程 JSTL經常使用標籤

1.條件標籤java

條件標籤可以實現Java語言中的if語句以及if-else語句的功能,它包括如下幾種:數組

<c:if>:用於實現Java語言中的if語句的功能。session

<c:choose>、<c:when>、<c:otherwise>:用於實現Java語言中if-else語句的功能。app

(1)<c:if>標籤jsp

<c:if>標籤用於實現Java語言中的if語句的功能,它的語法爲:oop

<c:if test="邏輯表達式" var="表明邏輯表達式的值的命名變量的名字"索引

      scope= "{page|request|session|application}" />接口

</c:if>rem

<c:if>標籤會把邏輯表達式的值存放在var屬性指定的命名變量中,scope屬性則指定命名變量的範圍,scope屬性的默認值是page。字符串

例如如下<c:if>標籤先判斷username請求參數的值是否爲Tom,而後把判斷結果做爲result命名變量存放在請求範圍內:

<c:if test="${param.username==’Tom’}"

       var = "result" scope="request" />

${result}

</c:if>

以上<c:if>標籤等價於如下Java程序片斷:

<%

    String username = request.getParamaeter("username");

    if(username!=null &&"Tom".equals(username)){

          request.setAttribute("result",true);

    }else{

          reuqest.setAttribute("result",false);

    }

%>

<c:if>標籤還能夠包含標籤主體,只有當邏輯表達式的值爲true時,纔會執行標籤主體。例如:

<c:if test=${param.save==’user’}" >

     Saving user

     <c:set var="user" value="Tom" />

</c:if>

以上<c:if>標籤等價於如下Java程序片斷:

<%

     String save=request.getParameter("save");

     if(save!=null && "user".equals(save)){

           out.print("Saving user");

           pageContext.setAttribute("user","Tom");

     }

%>

 

(2)<c:choose>、<c:when>、<c:otherwise>標籤

<c:choose>、<c:when>、<c:otherwise>標籤在一塊兒連用,能夠實現Java語言中的if-else語句的功能。例如以下代碼根據username請求參數的值來打印不一樣的結果:

<c:choose>

     <c:when test="${empty param.username}">

          UnKnown user;

     </c:when>

     <c:when test="${param.username==’Tom’}">

          ${param.username} is manager.

     </c:when>

     <c:otherwise>

          ${param.username} is employee.

     </c:otherwise>

</c:choose>

以上標籤等價於如下Java程序片斷:

<%

     String username=request.getParameter("username");

     if(username==null){

           out.print("UnKnown user.");

     }else{

           out.print(username + "is manager.");

     }else{

           out.print(username + "is employee.");

     }

%>

<c:choose>、<c:when>、<c:otherwise>標籤的使用必須符合如下語法規則:

<c:when>和<c:otherwise>不能單獨使用,它們必須位於<c:choose>父標籤中。

在<c:choose>標籤中能夠包含一個或多個<c:when>標籤。

在<c:choose>標籤中能夠不包含<c:otherwise>標籤。

在<c:choose>標籤中若是同時包含<c:when>和<c:otherwise>標籤,那麼<c:otherwise>必須位於<c:when>標籤以後。

 

2.<c:forEach>標籤

(1)<c:forEach>標籤的基本語法爲:

<c:forEach var="表明集合中的一個元素的命名變量的名字" items="集合">

標籤主體

</c:forEach>

<c:forEach>標籤每次從集合中取出一個元素,而且把它存放在NESTED範圍內的命名變量中,在標籤主體中能夠訪問這個命名變量。NESTED範圍是指當前標籤主體構成的範圍,只有當前標籤主體纔可以訪問NESTED範圍內的命名變量。

例如如下代碼先建立了一個names集合,而後經過<c:forEach>標籤遍歷這個集合,並打印集合中的全部元素。

<%@ page import="java.util.HashSet" %>

<%

     HashSet names = new HashSet();

     names.add("Tom");

     names.add("Mike");

     names.add("Linda");

%>

<c:forEach var="name" items="<%=names %>">

     ${name} &nbsp;

</c:forEach>

運行以上代碼,獲得的打印結果爲"Tom Mike Linda"。以上<c:forEach>標籤等價於如下的Java程序片斷:

<%@ page import="java.util.HashSet" %>

<%

     for(String name : names){

         pageContext.setAttribute("name",name);

         name =(String)pageContext.getAttribute("name");

         out.print(name + " ");

         pageContext.removeAttribute("name");

     }

%>

(2)<c:forEach>標籤的varStatus屬性

<c:forEach>標籤的varStatus屬性用於設定一個javax.servlet.jsp.jstl.core.Loop TagStatus類型的命名變量,它位於NESTED範圍,這個命名變量包含了從集合中取出的當前元素的狀態信息。

count:當前元素在集合中的序號,從1開始計數。

index:當前元素在集合中的索引,從0開始計數。

first:當前元素是不是集合中的第一個元素。

last:當前元素是不是集合中的最後一個元素。

(3)<c:forEach>標籤的begin、end和step屬性

<c:forEach>標籤的begin、end和step屬性分別指定循環的起始索引、結束索引和步長。

(4)<c:forEach>標籤能夠遍歷的集合

<c:forEach>標籤能夠遍歷的集合包括:

1)java.util.Set、java.util.List、java.util.Map、java.util.Iterator和java.util.Enumeration接口的實現類。

2)Java數組

3)以逗號分隔的字符串。

 

3.<c:forTokens>標籤

<c:forTokens>標籤用於遍歷字符串中用特定分隔符分隔的子字符串,而且能重複執行標籤主體。<c:forTokens>標籤的基本語法以下:

<c:forTokens var="表明字符串的命名變量的名字"

     items="被分隔的字符串" delims="分隔符">

標籤主體

</c:forTokens>

在<c:forTokens>標籤中也可使用varStatus、begin、end和step屬性。

相關文章
相關標籤/搜索