1. 程式人生 > 其它 >18 JSTL標籤庫

18 JSTL標籤庫

JSTL 標籤庫

JSTL 標籤庫 全稱是指 JSP Standard Tag Library JSP 標準標籤庫。是一個不斷完善的開放原始碼的 JSP 標籤庫。
EL 表示式主要是為了替換 jsp 中的表示式指令碼,而標籤庫則是為了替換程式碼指令碼。這樣使得整個 jsp 頁面變得更佳簡潔。

JSTL 由五個不同功能的標籤庫組成。

在 jsp 標籤庫中使用 taglib 指令引入標籤庫

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

<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>FMT 標籤庫

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>SQL 標籤庫

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>FUNCTIONS 標籤庫

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %

JSTL 標籤庫的使用步驟

1、先匯入 jstl 標籤庫的 jar 包。
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar

2、第二步,使用 taglib 指令引入標籤庫

core 核心庫使用

i.set(使用很少)

作用:set 標籤可以往域中儲存資料

    <%--
    <c:set/>
        作用:set標籤可以往域中儲存資料
        域物件.setAtttribute(key,value);
        scope 屬性設定儲存到哪個域
            page表示pageContext域
            request表示Request域
            session表示Session域
            application表示ServletContext域
        var屬性設定key是多少
        value屬性設定value是多少
    --%>
    儲存之前:${requestScope.abc}<br>
    <c:set scope="page" var="abc" value="abcValue"/>
    儲存之後:${requestScope.abc}<br>

ii.if

if 標籤用來做 if 判斷。

  <%--
        <c:if />
        if標籤用來做if判斷

        test屬性表示判斷的條件(使用EL表示式輸出)
        --%>
        <c:if test="${12 == 12}">
            <h1>12等於12</h1>
        </c:if>

iii. chose when otherwise 標籤

作用:多路判斷。跟 switch ... case .... default 非常接近

 <%--
    <c:choose> <c:when> <c:otherwise>標籤
    作用:多路判斷。跟switch...case...default非常接近

    choose標籤表示開始選擇判斷
    when標籤表示每一種判斷情況

    注意點:
      1、標籤裡不能使用html註釋,要使用jsp註釋
      2、when標籤的父標籤一定要是choose標籤
    --%>

    <%
        request.setAttribute("height",178);
    %>

    <c:choose>
       <c:when test="${requestScope.height > 190}">
           <h2>小巨人</h2>
       </c:when>
        <c:when test="${requestScope.height > 180}">
            <h2>很高</h2>
        </c:when>
        <c:when test="${requestScope.height > 170}">
            <h2>不錯</h2>
        </c:when>
        <c:otherwise>
            <h2>剩下的</h2>
        </c:otherwise>
    </c:choose>

iv.foreach

作用:遍歷輸出使用。

  1. 遍歷 1 到 10,輸出
    示例程式碼:
    <%--
    遍歷1-10,輸出
    begin屬性設定開始的索引
    end 屬性設定結束的索引
    var 屬性表示迴圈的變數(也是當前正佔遍歷到的資料 )
    --%>
    <c:forEach begin="1" end="10" var="i">
        ${i}
    </c:forEach>
  1. 遍歷 Object 陣列
    示例程式碼:
    <%--
    遍歷Object陣列
        items表示遍歷的資料來源(遍歷的集合)
        var 屬性表示迴圈的變數(也是當前正佔遍歷到的資料 )

    --%>

    <%
        request.setAttribute("arr", new String[]{"18610541354","18688886666","18699998888"});
    %>
    <c:forEach items="${requestScope.arr}" var="item">
        ${item}
    </c:forEach>
  1. 遍歷 Map 集合
    <%--
    遍歷Map集合
     items表示遍歷的資料來源(遍歷的集合)
     var 屬性表示迴圈的變數(也是當前正佔遍歷到的資料 )

    --%>
    <%
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        request.setAttribute("map", map);
    %>
    <c:forEach items="${requestScope.map}" var="entry">
        ${entry.key}
    </c:forEach>
  1. 遍歷 List 集合---list 中存放 Student 類,有屬性:編號,使用者名稱,密碼,年齡,電話資訊

Student 類:

public class Student {
    //4.編號,使用者名稱,密碼,年齡,電話資訊
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String phone;

示例程式碼:

    <%--
        遍歷 List 集合---list 中存放 Student 類,有屬性:編號,使用者名稱,密碼,年齡,電話資訊
         items表示遍歷的資料來源(遍歷的集合)
        var 屬性表示迴圈的變數(也是當前正佔遍歷到的資料 )
        begin表示遍歷的開始索引值
        end表示結束的索引值
        step 表示遍歷的步長值 相等於 i+=2
        varStatus表示當前遍歷到資料的狀態
    --%>
    <%
        List<Student> studentList = new ArrayList<Student>();
        for (int i = 1; i <= 10; i++) {
            studentList.add(new Student(i,"username"+i ,"pass"+i,18+i,"phone"+i));
        }
        request.setAttribute("stus", studentList);
    %>
    <c:forEach begin="2" end="7" step="2" varStatus="status" items="${requestScope.stus}" var="stu">
        ${stu}
    </c:forEach>