天天看點

JSTL學習筆記2---流程控制标簽

1、  <c:if>标簽的使用 

标簽跟我們java中的if類似 ,隻是表現方法不一樣而已 。結構如下  :test 代表判斷表達式var的結果是true還是false  ,結果存于result中

注意的一點是 我們在jstl中要引用屬性的時候 都要将屬性名字放到"${}"中  。

<c:if   test="${var}"  var="result" scope="範圍"/>    不帶body的

<c:if  test="${var}"  var="result" scope="範圍">

..........内部可以使jstl标簽  也可以是html  也可以是文本  ,如果test=true那麼 就會輸出這一部分

</body>

在jsp中的使用如下:

<c:if test="${3>4}" var="result">

3>4  <br>

</c:if>

<c:out value="${result}"    default="null"   escapeXml="true" />

2、<c:choose>

       <c:when   test="${表達式}">

       </c:when>

       <c:otherwise>

       </c:otherwise>

    </c:choose>  

  标簽類似switch語句    

代碼如下 :

<c:choose >

    <c:when test="${1>3}">

    1>3 <br>

    </c:when>

    <c:when test="${2==21}">

    2==2 <br>

    <c:when test="${3>11}">

    3>1<br>

    <c:otherwise>

    預設輸出!<br>

    </c:otherwise>

</c:choose>   

3、<c:forEach   var=""   items="${}"  varstaus=""  [ begin=""  step=""  end=""]> 

     </c:forEach> 

    标簽可以疊代 實作java.util.Collection接口的類  也可以疊代  實作了  java.util.Map的類  .j

   也可以疊代數組,對于數組疊代的時候 ,比如 int型數組 的每個成員會被轉換成 Integer   類型   。

要注意的一點是 我們要疊代的對象必須是設定setAttribute設定的屬性 。

   <%

   String [] strs={"11","22","33","44","55","66","77","88","99","00"} ;

request.setAttribute("strs", strs) ;  

   Collection col=new ArrayList(10);

   for(int i=0;i<10;i++)

    col.add(i) ;

   request.setAttribute("col", col) ;  

   Map<Integer,Object> map=new  HashMap<Integer,Object>() ; 

   map.put(10, 22);

   map.put(18, 62);

   map.put(85,55);

   request.setAttribute("map",map) ;

   Collection c=map.entrySet() ;

   for(Object a:c)

   {

     ((Map.Entry)a).getKey();

   } 

%>

<c:forEach items="${map}" var="str" varStatus="status">

<c:out value="${str.key}"></c:out> 

<c:out value="${status.index}"/>

<c:out value="${status.count}"></c:out><br>

</c:forEach>

4、  利用 <c:forTokens items="${info}" delims="|"   varStatus="stat"  var="str"> 

                </c:forTokens> 

  标簽循環提取以  delims分割的字元串,每個子字元串儲存在str中 。    

  varStatus 依然有四個狀态   index    目前索引    count  目前字串次數      first  是否是第一個字元串       last 是否是最後一個字元串

<%

String info="a|b|c|d";

request.setAttribute("info",info);

<c:forTokens items="${info}" delims="|" varStatus="stat"  var="str">

<c:out value="${str}" ></c:out>

<c:out value="${stat.index}"></c:out>

<c:out value="${stat.count}"></c:out>

<c:if test="${stat.first}">這是第一個字元串</c:if>

<c:if test="${stat.last}">這是組後一個字元串</c:if>

</c:forTokens>