填坑之路:JSTL

一、什么是JSTL

JSP標(biāo)準(zhǔn)標(biāo)簽庫(JSTL)是一個JSP標(biāo)簽集合,它封裝了JSP應(yīng)用的通用核心功能,它是apache對EL表達(dá)式的擴(kuò)展(也就是說JSTL依賴EL)。

二、JSTL怎么用

如果你是使用MyEclipse開發(fā),那么在把項目發(fā)布到Tomcat時它會在自動在lib目錄下存放jstl的Jar包,如果你是使用Eclipse等其他開發(fā)工具的話,你就需要手動導(dǎo)入jstl.jar和 standard.jar(非必須)。

三、JSTL標(biāo)簽庫

JSTL一共包含4大標(biāo)簽庫,包括core(核心標(biāo)簽庫)、fmt(格式化標(biāo)簽庫)、sql(數(shù)據(jù)庫標(biāo)簽庫),xml(xml標(biāo)簽庫),以下一一講解。

1. 核心標(biāo)簽庫core常用標(biāo)簽
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • prefix:指定標(biāo)簽庫的前綴,可以根據(jù)具體需要自己指定(如core庫大家使用時都會使用默認(rèn)c作為前綴)
  • uri:指定具體標(biāo)簽庫的uri,用于讓jsp連接到相應(yīng)標(biāo)簽庫的描述文件

(1) out、set和remove標(biāo)簽

<c:out value="foo">  //在頁面中打?。篺oo(字符串)

<c:set var="foo" value="fooText" >  //沒指定scope,默認(rèn)在pageContext域中添加鍵foo其值為fooText
<c:set var="foo" value="fooText" scope="session">  //指定在session中添加鍵值對
<c:out value="${foo}">  //在頁面中打印:fooText(變量foo的值)
<c:out value="${foo}" default="defaultText">  //當(dāng)foo不存在時,輸出默認(rèn)值 defaultText時

<c:remove var="foo">  //刪除所有域中鍵為foo的數(shù)據(jù)
<c:remove var="foo" scope="session">  //刪除指定的session域中鍵為foo的數(shù)據(jù)

(2) url標(biāo)簽

<c:url value="/urlText">  //在頁面打?。?/當(dāng)前項目名/urlText

<c:url value="/urlText">
<c:param name="username" value="foo"/>  //在頁面打?。?當(dāng)前項目名/urlText?username=foo
//url標(biāo)簽可用來重寫url,當(dāng)遇到中文時,自動轉(zhuǎn)為url編碼

(3)if標(biāo)簽(其中test屬性的值必須是boolean類型的值)

<c:set var="foo" value="fooText"/>  
<c:if test="${not empty foo }">  //判斷foo是否為空  
    <c:out value="${foo }"/>  //在頁面打?。篺ooText(判斷返回true,打印foo的值)
</c:if>  

(4)choose標(biāo)簽(對應(yīng)于if/else語句)

<c:choose> 
  <c:when test="${empty param.name}">   //后臺傳參param,判斷非空
    Nnknown user.  
  </c:when> 
  <c:when test="${param.name == 'lalala'}">   
    ${param.name} is manager.  
  </c:when> 
  <c:otherwise>   
    ${param.name} is employee.  
  </c:otherwise> 
</c:choose> 

對應(yīng)于java程序片段:

<%  
String name = request.getParameter("name");  
if(name == null) {   //對應(yīng)第一個<c:when>標(biāo)簽的主體  
  out.print("Nnknown user.");  
} else if (name.equals("Tom")){    //對應(yīng)第二個<c:when>標(biāo)簽的主體  
  out.print(name+" is manager.");  
} else {    //對應(yīng)<c:otherwise>標(biāo)簽的主體  
  out.print(name+" is employee.");  
}  
%> 

(5)forEach標(biāo)簽(循環(huán)標(biāo)簽)

// 1.循環(huán)變量
<c:forEach var="i" begin="1" end="10"> //可以指定step,表示遞增跨度
  <c:out value="${i}"></c:out> // 在頁面打印:1 2 3 ...
</c:forEach>  

// 2.遍歷集合/數(shù)組
<%  
  String[] names = {"zhangSan", "liSi", "wangWu", "zhaoLiu"};  
  pageContext.setAttribute("names", names);  
%>  
<c:forEach var="item" items="${names }">  
  <c:out value="name: ${item }"/> //打印出數(shù)組names中的所有name
</c:forEach> 

// 3.遍歷list
<%  
  List<String> names = new ArrayList<String>();  
  names.add("zhangSan");  
  names.add("liSi");  
  names.add("wangWu");  
  names.add("zhaoLiu");  
  pageContext.setAttribute("names", names);  
%>  
<c:forEach var="item" items="${names }">  
  <c:out value="name: ${item }"/>
</c:forEach>  

// 4.遍歷Map
<%  
  Map<String,String> stu = new LinkedHashMap<String,String>();  
  stu.put("number", "N_1001");  
  stu.put("name", "zhangSan");  
  stu.put("age", "23");  
  stu.put("sex", "male");  
  pageContext.setAttribute("stu", stu);  
%>  
<c:forEach var="item" items="${stu }">  
  <c:out value="${item.key }: ${item.value }"/>
</c:forEach> 

forEach標(biāo)簽還可以用varStatus來指定循環(huán)狀態(tài)的變量名,以獲取循環(huán)狀態(tài)。

  • count:int類型,當(dāng)前以遍歷元素的個數(shù);
  • index:int類型,當(dāng)前元素的下標(biāo);
  • first:boolean類型,是否為第一個元素;
  • last:boolean類型,是否為最后一個元素;
  • current:Object類型,表示當(dāng)前項目。
<%  
  String[] names = {"zhangSan", "liSi", "wangWu", "zhaoLiu"};  
  pageContext.setAttribute("names", names);  
%>  
<c:forEach var="item" items="${names }" varStatus="vs">  
  <c:if test="${vs.first }">第一行:</c:if>  
  <c:if test="${vs.last }">最后一行:</c:if>  
  <c:out value="第${vs.count }行: "/>  
  <c:out value="[${vs.index }]: "/>  
  <c:out value="name: ${vs.current }"/><br/>  
</c:forEach> 
varStatus例子結(jié)果
2. fmt標(biāo)簽庫常用標(biāo)簽
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>  

(1)格式化時間

<%  
  Date date = new Date();  
  pageContext.setAttribute("date", date);  
%>  
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss"/>  //在頁面打印:2017-04-06 19:20:20

(2)格式化數(shù)字

<%  
  double num1 = 1.1;  
  double num2 = 2.2222;   
  pageContext.setAttribute("num1", num1);  
  pageContext.setAttribute("num2", num2);  
%>  
<fmt:formatNumber value="${num1 }" pattern="0.00"/>  //在頁面打?。?.10(補位和去位)
<fmt:formatNumber value="${num2 }" pattern="#.##"/>  //在頁面打?。?.22(四舍五入)
sql與xml標(biāo)簽庫已經(jīng)過時了,不再累述

本文借鑒 http://blog.csdn.net/qq_25827845/article/details/53311722

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JSP 基本結(jié)構(gòu)JSP 頁面組成:模板文本(HTML,XML,純文本),JSP 元素;JSP 元素:腳本元素,指令...
    jslancer閱讀 1,096評論 0 11
  • 1什么是JSTLJSTL是apache對EL表達(dá)式的擴(kuò)展(也就是說JSTL依賴EL),JSTL是標(biāo)簽語言!JSTL...
    TY_閱讀 450評論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,728評論 18 399
  • JSP 標(biāo)準(zhǔn)標(biāo)簽庫(JSTL) JSP標(biāo)準(zhǔn)標(biāo)簽庫(JSTL)是一個JSP標(biāo)簽集合,它封裝了JSP應(yīng)用的通用核心功能...
    FTOLsXD閱讀 391評論 1 2
  • ----今天股市遭受久違的重挫。500只股票跌停,近2000只股票跌幅在5%以上。中小創(chuàng)是重災(zāi)區(qū),創(chuàng)業(yè)板大跌-5....
    老邵看盤閱讀 251評論 0 0

友情鏈接更多精彩內(nèi)容