JSTL標籤庫學習筆記

JSTL概述

apache的東西,依賴於EL

使用jstl需要導入jstl.jar包

標籤庫

  • core 核心標籤庫
  • fmt 格式化標籤庫
  • sql 數據庫標籤庫,過時
  • xml xml標籤庫,過時

JSTL標籤庫

四大標籤庫

  • core 核心庫
  • fmt 格式化標籤庫
  • sql 數據庫標籤庫,過時
  • xml xml標籤庫,過時

導入標籤庫

使用taglib命令

除了jsp的動作標籤外,使用其他的第三方的標籤庫都需要導包

在jsp頁面內導標籤庫

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

prefix 指定標籤的前綴,這個前綴可以隨便給值,但是大家都會在使用core標籤是指定前綴爲 c
uri 指定 標籤庫的uri ,他不一定是真實存在的網址

core標籤庫的常用標籤

core –> c標籤

out和set

remove

url

if

choose

forEach

out

* <c:out value="aaa"/> 
* 輸出字符串aaa
* <c:out value="${aaa}"/>
* 輸出域屬性aaa,其中與${aaa}相同
* <c:out value="${aaa}" default="xxx"/>
* 如果${aaa}不存在,那麼輸出xxx字符串如果${aaa}中包含特殊字符,那麼轉義它。這可以防止javascript攻擊,添加escapeXml 之後就不能防止script攻擊

例如:
    <%
        request.setAttribute("xxx", "<script>alert('12345');</script>");
    %>
  <c:out value="${xxx }" escapeXml="false"/>

set

創建域的屬性

<c:set var="a" value="hello" />
* 在pageContext中添加name爲a,value爲hello的數據
<c:set var="b" value="hello" scope="session" />
* 在session中添加name爲b,value爲hello的數據,變量值可以爲el表達式
* scope:域,默認爲page,可選值爲,page,request,session,application

remove

<c:remove var="a" />
* 刪除所有域中的name爲a的數據
* var: 變量名
* scope: 如果不給出scope,表示刪除所有域中該名稱變量,如果指定了,就只刪除該域的變量

url

* value: 指定一個路徑,他會在路徑前面自動添加項目名。
    * <c:url value="/index.jsp" /> 他會輸出/Test/index.jsp
*子標籤:<c:param>,用來給url後面添加參數,例如:
    <c:url value="/index.jsp" >
        <c:param name="username" value="zhangsan" /><!--可以對參數進行url編碼!!-->
    </c:url>
    //結果爲:/Test/index.jsp?username=%ED%2c%d 
* 指定變量名,一旦添加了這個屬性,那麼url標籤就不會再輸出到頁面,而是把生成的url保存到域中
* scope: 他與var一起使用,用來保存url。

if

if : 對應Java中的if語句
    <c:if test="布爾類型">..</c:if>

choose

 <c:choose>
    <c:when test="${條件1}">a</c:when>
    <c:when test="${條件2}">b</c:when>
    <c:when test="${條件3}">c</c:when>
    <c:otherwise>d</c:otherwise> //default
 </c:choose>

forEach

可以用來循環遍歷數組,集合
還可以用來計數

//計數
<c:forEach var="i" begin="1" end = "10">
    ${i}<br>
</c:forEach>
屬性介紹:
* var 循環變量
* begin 設置循環變量初始值
* end 設置循環變量結束值
* step 設置步長,等同於 i++或者是i += 2,默認爲1
用來輸出數組和集合
  <%
    String[] strs = {"one", "two", "three", "four", "five"};
    request.setAttribute("strs", strs);
   %>

  <c:forEach items="${requestScope.strs }" var ="str">
      ${str } 
  </c:forEach>

等同於增強for
for(String str:strs){
    ...
}

屬性:
* items: 指定要循環的對象,他可以是一個數組,或者是一個集合
* var: 把數組和集合中的每一個元素賦值個var指定的變量。
**注意:items中不能有空格,否則這個錯誤很難發現,既不能寫爲 items="${param.name } " **
**引號內是不能夠有空格,el表達式中可有**
循環狀態
可以使用varStatus來創建循環狀態變量
屬性:
* count 循環元素的個數
* index 循環元素的下標
* first 是否爲第一個元素
* last 是否爲最後一個元素
* current 當前元素
<c:forEach items="${requestScope.strs }"   var ="str" varStatus="vs">
    ${vs.index }${vs.count }${vs.first }${vs.last }${vs.current} ${str } 
    <br>
  </c:forEach>

fmt標籤庫常用標籤

格式化時間

 <%
    Date date = new Date();
    pageContext.setAttribute("date", date);
 %>
    <fmt:formatDate value="${date }" pattern="yyyy-MM-dd HH:mm:ss"/>
屬性介紹
* value 指定一個Date類型的變量
* pattern 用來指定輸出的模板!例如:yyyy-MM-dd HH:mm:ss
<fmt:formatNumber value="${num }" pattern="0.000" />
// 取捨是四捨五入,不夠爲補 0
<fmt:formatNumber value="${num }" pattern="#.###" />
// 取捨時四捨五入, 不夠不補位 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章