天天看點

EL&JSTL(2)——JSTL概述核心标簽庫

概述

JSTL需要使用taglibs-standard-impl.jar和taglibs-standard-spec.jar包。

不過我這裡使用的開發環境是IDEA,使用JSTL标簽會自動導入相關引用。

如:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
           

核心标簽庫

通用标簽

<c:out>标簽

功能:用來顯示資料的内容,與<%=表達式%>或${表達式}類似。

文法:

<c:out value="輸出的資料" default="defaultValue"] />
其中value值可以是EL表達式也可以是字元串,default是可選屬性,表單當value值不存在時輸出defaultValue。
           

示例:

<c:out value="這是一個字元串" default="沒有資料" />
           

<c:set>标簽

功能一:設定作用域變量;

文法:

<c: set value="value" var="varName" [scope="page|request|session|application"] />
scope是一個可選屬性,表示在哪一個範圍内設定變量;
var表示變量的名稱;
value表示變量的值。
           

示例:

<c:set value="張三" var="username" scope="session"/>
           

相當于

<% session.setAttribute("username","張三"); %>
           

功能二:設定JavaBean的屬性。

文法:

<c:set value="value" target="target" property="propertyName" />
           

将value值賦給target對象(JavaBean對象)的propertyName屬性。

如果target為null或沒有set方法則抛出異常。

<c:remover>标簽

功能:删除某個變量。

文法:

<c:remove var="變量名" scope"page|reequest|session|application" />
           

示例:

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

相當于

<% session.removeAttribute("username") %>
           

流程控制标簽

<c:if>标簽

功能:實作if語句的作用,條件判斷。

文法:

<c:if test="條件表達式">
    條件成立執行的内容
</c:if>
           

條件表達式可以是EL表達式也可以是JSP表達式。

如果表達式的值為true,則會執行主體内容,沒有對應的<c:else>标簽,是以如果如果條件不成立則需要使用<c:choose>、<c:when>及<c:other>标簽。

示例:

<c:if test="${3>2}">
        ${true}
    </c:if>
           

<c:choose>、<c:when>及<c:otherwise>标簽

功能:<c:choose>、<c:when>及<c:otherwise>标簽實作if/elseif/else語句的作用

文法:

<c:choose>
        <c:when test="條件表達式1">
            主體内容1
        </c:when>
        <c:when test="條件表達式2">
            主體内容2
        </c:when>
        <c:otherwise>
            表達式都不成立時執行的主體内容
        </c:otherwise>
    </c:choose>
           

示例:

<c:choose>
        <c:when test="${3>2}">
            3大于2
        </c:when>
        <c:otherwise>
            3不大于2
        </c:otherwise>
    </c:choose>
           

疊代标簽

<c:forEach>标簽

功能:實作for循環。

文法:

<c:forEach var="變量名" items="數組|Collection對象">
        循環體
    </c:forEach>
           

items屬性可以是數組也可以是集合對象,每次循環讀取其中的一個元素,并指派給var屬性指定的變量,然後就可以在循環體中使用var指定的變量擷取對象的元素。

示例:

<%
        String[] users={"張三","李四","王五"};
    %>
    <c:forEach var="user" items="<%=users%>">
        ${user}
    </c:forEach>
           

在有些情況下需要為<c:forEach>标簽指定begin、end、step和varStatus屬性。

  • begin:為疊代時的開始位置,預設值為0;
  • end:為疊代時的結束位置,預設值是最後一個元素;
  • step:為疊代步長,預設值為1;
  • varStatus:為疊代變量的狀态,包括count(疊代的次數)、index(目前疊代的索引,第一個索引為0)、first(是否為第一個疊代對象)和last(是否為最後一個疊代對象)。

<c:forTokens>标簽

功能:用于疊代字元串中由分隔符分隔的各成員。

文法:

<c:forTokens items="要疊代的字元串對象"  delims="指定分隔字元串的分隔符" var="變量名">
        循環體
    </c:forTokens>
           

也有begin、end、step和varStatus屬性,用法相同。

示例:

<c:forTokens items="A,B,C,D,E,F"  delims="," var="str">
        ${str}<br>
    </c:forTokens>
           
EL&amp;JSTL(2)——JSTL概述核心标簽庫