`

JSTL參考

    博客分类:
  • JSP
 
阅读更多
1.JSTL 1.1(JavaServer Pages Standard Tag Library)
JSTL分為五大類:
1. Core Tag Library
   前置名稱@: c URI:http://java.sun.com/jsp/jstl/core
2. I18N-capable for formatting tag library  (晚一點講)
   前置名稱: fmt URI:http://java.sun.com/jsp/jstl/fmt
3. SQL tag library  (不會講)
   前置名稱: sql URI:http://java.sun.com/jsp/jstl/sql
4. XML tag library  (不會講)
   前置名稱: xml URI:http://java.sun.com/jsp/jstl/xml
5. Function tag library
   前置名稱: fn URI:http://java.sun.com/jsp/jstl/functions

JSTL也支持EL語法。
<c:out value="<%=userList.getUser().getPhoneNumber()%>"/>
等於
<c:out value="${userList.user.phoneNumber}"/>

JSTL 1.1必須在支持Servlet2.4且JSP2.0以上的版本的Container才可以使用。
主要由Apache組織的Jakarta Project所實現的。
http://jakarta.apache.org/builds/jakarta-taglibs/releases/standard/下載

JSTL 1.0 的 uri為http://java.sun.com/jstl/core
JSTL 1.1 的 uri為http://java.sun.com/jsp/jstl/core
JSTL 1.0少了 jsp/

在jsp網頁中使用JSTL時,一定要先做聲明
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
一般的前置名稱都是c,不過uri必須http://java.sun.com/jsp/jstl/core

2. Core tag library
表達式操作:output, set, remove,catch
流程控制:if, choose, when, otherwise
Iterate 操作:forEach, forTokens
URL 操作:import, url, redirect

備註:[] 為不一定需要的屬性
      {} 為選擇
2.1 表達式操作
- <c:out>
  a. <c:out value="value" [escapeXML="{true|false}"] [default="defaultValue"]/>
  b. <c:out value="value" [escapeXML="{true|false}"]>
     defaultValue
     </c:out>
     escapeXML:是否轉換特殊字符,預設是true。
     default:如果value的值為null,則顯示default的值
     < &lt;
     > &gt;
     ' &#039;
     " &#034;
     & &amp;
   範例:* <c:out value="${3 + 5}"/>
         * <c:out value="<p>Special</p>" escape="false" />
  
   N.B. 若value為null,會顯示default的值:如沒有default的值,則顯示 一個空的字符串。
- <c:set>
  a. <c:set value="value" var="varName" [scope="{page|request|session|application}"]/>   
  b. <c:set var="varName" [scope="{page|request|session|application}"]>
     value
     </c:set>
  c. <c:set value="value" target="target" property="propertyName"/>
  d. <c:set target="target" property="propertyName">
      value
     </c:set>
     var: 欲存入的變數名稱
     scope:var變數的JSP範圍
     target: 為一個JavaBean 或java.util.Map物件
     property:target物件的屬性
  範例:* <c:set var="number" scope="request" value="${1+1}" />
        * <c:set var="number" scope="session">
          ${1+1}
          </c:set>
        *3 <c:set var="number" scope="request" value="${param.number}"/>
        *4 <c:set target="UserDTO" property="name" value="${param.username}"/>
        *3 與 *4 的value為null有差別:
        *3 ${param.number} 為 null,則會移除Request範圍的number變數
        *4 ${param.username} 為 null 時,則會設定UserDTO(JavaBean)的name屬性為null
- <c:remove>
  a. <c:remove var="varName" [scope="{page|request|session|application}"] />
  <c:remove>必須要有var屬性,即要被刪除的屬性名稱,scope 可有可無。
  若沒有設定scope,則將會刪除所有範圍(page, request, session, application)
  名稱為number的數據。
- <c:catch> 
  主要用來處理產生錯誤的異常狀況,並且將錯誤信息存起來。
  範例:
  <c:catch var="errorMessage">
  <%
    String eFormat = "not number";
    int i = Integer.parseInt(eFormat);
  %>
  </c:catch>
  ${errorMessage}  

2.2 流程控制
- <c:if>
  a. <c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
  b. <c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
     本體內容
     </c:if>
     test:如testCondition為true,則執行本體內容
     var :用來存test運算後的結果。
     範例:
     <c:if test="${param.username == 'admin'}">
     ADMIN 你好!
     </c:if>
- <c:choose> 本身只當<c:when>和<c:otherwise>的父標籤
  本體內容只能有:
  * 空白
  * 1或多個 <c:when>
  * 0 或1個 <c:otherwise>
  <c:choose>
    ..
    <c:when>
    </c:when>
    <c:otherwise>
    </c:otherwise>
  </choose> 
- <c:when> 
  <c:when test="testCondition">
  本體內容
  </c:when>
- <c:otherwise>      
  在同一個中<c:choose>,當所有<c:when>的條件都沒有成立時,
  則執行<c:otherwise>的本體內容
  範例:
  <c:choose>
    <c:when test="${condition1}">
    condition1為true
    </c:when>
    <c:when test="${condition2}">
    condition2為true
    </c:when>
    <c:otherwise>
    condition1和condition2都為false
    </c:otherwise>
  </choose>
 
2.3 Iterate 操作
- <c:forEach>
  a. <c:forEach [var="varName"] items="collection" [varStatus="varStatusname"] [begin="begin"] [end="end"] [step="step"]>
     本體內容
     </c:forEach>
  b. <c:forEach [var="varName"] [varStatus="varStatusname"] begin="begin" end="end" [step="step"]>
     本體內容
     </c:forEach>
     items: Arrays,Collection,Iterator,Enumeration,Map,String
     varStatus: 用來存放現在指到的相關成員信息
     begin:開始的位置
     end:結束的位置
     step:每次的間隔數,不可以小於1
    
- <c:forTokens>
  用來瀏覽一字符串所有的成員,其成員由定義符號(delimiters)所分隔的。
  <c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
  本體內容
  </c:forTokens>
  var:用來存放現在指到的成員
  items: 被iterate的字符串
  delims:定義用來分割字符串的字符
  varStatus: 用來存放現在指到的相關成員信息
  begin:開始的位置
  end:結束的位置
  step:每次的間隔數 
  例:
  <c:forTokens items="A,B,C,D,E" delims="," var="item">
  ${item}
  </c:forTokens>
  <c:forTokens items="A,B;C-D,E" delims=",;-" var="item">
  ${item}
  </c:forTokens>
  結果:A B C D E(分成五次列出)
 
2.4 URL 操作
- <c:import>
  a. <c:import url="url" [context="context"] [var="varName"] [scope="{page|request|session|application}"] [charEncoding="charEncoding"]>
     本體內容
     </c:import>
  b. <c:import url="url" [context="context"] varReader="varReaderName"] [charEncoding="charEncoding"]>
     本體內容
     </c:import>
     假如url為null或空時,會產生JspException
     範例:
     * <c:import url="http://java.sun.com" />
     就是把http://java.sun.com的內容加到網頁中。
     * <c:import url="ftp://ftp.cse.yzu.edu.tw/data.txt" />
     將把data.txt 的內容顯示出來。
     * <c:import url="/images/copyright.jsp" var="copyright" scope="application">
     在application範圍,存這個copyright變數;對常用的動作會更方便   
- <c:url>
  <a href="<c:url value="http://www.javaworld.com.tw">
    <c:param name="param" value="value" />
  </c:url>"></a>
  =>
  <a href="http://www.javaworld.com.tw?param=value"></a>
 
  <img src="<c:url value="/images/code.gif"/>" />
- <c:redirect>
  url就是設定要被導向到目標地址
  <c:redirect url="http://www.javaworld.com.tw" />
  <c:redirect url="/jsp/index.html" context="/others">

6. Function tag library
   <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
- ${<fn:contains(string,substring)>} => boolean
  判斷某字符串是否在一字符串之中
  <c:set var="s1" value="There is a castle on a cloud"/>
  ${fn:contains(s1,"castle")} => true
- ${<fn:containsIgnoreCase(string,substring)>} => boolean
  判斷某字符串是否在已有字符串之中,並忽略其大小寫。
  <c:set var="s1" value="There is a castle on a cloud"/>
  ${fn:containsIgnoreCase(s1,"there")} => true
- ${<fn:startsWith(string,prefix)>} => boolean
  判斷一字符串是否以某一字符串為開頭。
  <c:set var="s1" value="There is a castle on a cloud"/>
  ${fn:startsWith(s1,"castle")} => false
- ${<fn:endsWith(string,suffix)>} => boolean
  判斷一字符串是否以某一字符串之後。
  <c:set var="s1" value="There is a castle on a cloud"/>
  ${fn:endsWith(s1,"castle")} => false 
  ${fn:endsWith(s1,"cloud")} => true
- ${<fn:escapeXml(string)>}
  用來轉換字符。<,>,',",和&轉換為&lt;,&gt;,&#039;,&#034;和&amp;
  ${fn:escapeXml("<foo>body of foo</foo>")}
  會顯示 <foo>body of foo</foo>
- ${<fn:indexOf(string,substring)>} => int
  用來計算substring在string中第一次相等的位置。
  <c:set var="s1" value="There is a castle on a cloud"/>
  ${fn:indexOf(s1,"castle")} => 11
- ${<fn:split(string,delimiters)>} => string[]
  將字符串分離成衣字符串數組
  delimiters:用來分離的字符串符號
- ${<fn:join(array,seperator)>} => string
  將陣列中的全部元素以指定字符串作為連接符,回傳結合後的字符串。
- ${<fn:replace(inputString,beforeSubstring,afterSubstring)>} => string
  inputString -> 原輸入的字符串
  beforeSubstring -> 要替換的字符串
  afterSubstring -> 替換成為字符串
  Result -> 取代後的字符串
- ${fn:trim(string)} => string
  去除字符串的前後空白
- ${fn:substring(string,beginIndex,endIndex)} => string
  抽取字符串中的某一子字符串
- ${fn:substringAfter(string,substring)} => string
  抽取字符串中某子字符串之後的字符串
- ${fn:substringBefore(string,substring)} => string
  抽取字符串中某子字符串之前的字符串
  範例:
  <c:set var="s1" value="There is a castle on a cloud"/>
  ${fn:substring(s1, 11, 17)} => castle
  ${fn:substringAfter(s1, "There")} => is a castle on a cloud
  ${fn:substringBefore(s1, "on a")} => There is a castle
- ${fn:toLowerCase(string)}轉換為小寫字符
- ${fn:toUpperCase(string)}轉換為大寫字符
- ${fn:length(input)} => integer
  回傳一集合對象的數量或一字符串中的字符數。
  input:原輸入
  <c:set var="s1" value="There is a castle on a cloud"/>
  ${fn:length(s1)} => 28
分享到:
评论

相关推荐

    jstl参考手册Word版

    JSTL,全称JavaServer Pages Standard Tag Library,是一个用于JSP的标准标签库,它提供了许多功能强大的标签,用于简化JSP开发,提高代码的可读性和可维护性。本篇文档主要介绍了JSTL的核心库(Core Library),...

    JSTL参考资料,可供随时参考

    在"JSTL参考资料,可供随时参考"这个资料包中,包含了多种格式的文档,如PDF、DOC和CHM,这些文档详尽地阐述了JSTL的语法、功能和使用方法,对于JSP开发者来说是一份非常实用的学习资源。下面将对JSTL的一些核心知识...

    jstl参考手册大全.chm

    提供的两个CHM文件——"JSTL帮助文档.chm"和"JSTL_api.chm"是JSTL的官方文档和API参考,它们详细解释了每个标签的用法、属性和方法,是学习和使用JSTL的重要参考资料。通过阅读这些文档,开发者可以深入理解JSTL的每...

    jstl参考手册和相关文档

    这个rar包中包括一个jstl reference 中文版,和jstl帮助手册.pdf(英文)和JSTL帮助文档.chm(英文)和jstl函数标签.doc(中文) 和JSTL 入门 IBM文档.chm(中文),欢迎大家下载

    JSTL参考资料+学习笔记

    **JSTL(JavaServer Pages Standard Tag Library)**是Java Web开发中的一种标准标签库,它为JSP...JSTL的学习笔记对于Java开发爱好者来说是一份宝贵的参考资料,可以帮助他们快速掌握JSTL的用法并应用于实际项目中。

    JSTL参考文字版中文

    ### JSTL1.1标签库详解 #### 一、简介 JSTL(JavaServer Pages Standard Tag Library)是为简化JavaServer Pages (JSP) 页面开发而设计的一组标准标签库。它提供了多种功能强大的标签,使得开发者可以更加轻松地...

    JSTL标签库参考文档_CHM格式

    本人根据SUN官方JSTL参考文档制作的CHM格式。本文档仅包括JSTL的5个标签库的参考内容。

    jstl中文参考手册

    ### JSTL中文参考手册详解 #### 一、引言 JSTL(JSP Standard Tag Library,JSP标准标记库)是专为简化Web应用开发而设计的一组自定义标签库。它由一系列标签组成,旨在实现Web应用程序中常用的通用功能,如迭代...

    jstl中文参考文档

    jstl中文参考文档,jstl帮助文档,jstl中文,自己做的

    Jstl语法参考

    Jstl语法参考 Jstl语法参考 Jstl语法参考

    jsp标签库jstl入门教程

    开发人员可能需要自行下载和集成Apache Software Foundation的Jakarta Taglibs项目中的JSTL参考实现。 总的来说,JSTL通过提供一组预定义的、易于理解和使用的标签,极大地提升了JSP页面的开发效率和可维护性,是...

    JSTL标签 参考手册

    这篇参考手册将深入探讨JSTL的核心组件和其在实际开发中的应用。 首先,我们来看看JSTL中的核心库: 1. **JSTL Core(JSTL_C标签库)**:这个库包含了与控制流相关的标签,如`&lt;c:forEach&gt;`(迭代)、`&lt;c:if&gt;`...

    JSTL详细参考手册

    ### JSTL (JSP Standard Tag Library) 详解 #### JSTL简介及原因 **JSTL**(JSP Standard Tag Library),即JSP标准标签库,是一种为简化JavaServer Pages (JSP) 页面开发而设计的标准标签库。它通过提供一系列...

    开发参考:JSTL网络标签与SSH类参考手册

    **JSTL网络标签与SSH类参考手册** JavaServer Pages Standard Tag Library (JSTL) 是一套用于简化Java Web应用程序开发的标签库。它提供了一系列预定义的标签,用于处理常见的JSP任务,如迭代、条件判断、XML处理等...

    jstl帮助 jstl帮助手册 jstl帮助文档

    在这个压缩包中,`jstl帮助`可能包含了详细的JSTL使用教程、API参考、示例代码等内容。开发者可以通过阅读这些资料,了解每个标签的功能、用法以及注意事项,从而更好地将JSTL应用于实际项目中,提高开发效率。对于...

    JSTL教程

    Apache软件基金会的Jakarta Taglibs项目提供了JSTL的参考实现,允许开发者将其集成到他们的JSP应用程序中。这使得即使在不直接支持JSTL的应用服务器上,也能使用这些功能强大的标签库。 总结来说,JSTL是JSP开发中...

    jstl源码jstl学习

    **JSTL(JavaServer Pages Standard Tag Library)**是Java ...在这个项目中,可能包含了使用JSTL实现的各种示例页面或代码片段,供学习者参考和实践。通过深入研究这些文件,可以更直观地了解JSTL在实际应用中的运用。

    JSTL1.1及EL表达式中文参考手册

    **JSTL1.1及EL表达式**是Java服务器页面(JSP)开发中的重要组件,它们极大地提升了JSP的可读性和可维护性。本文将深入探讨这两个概念及其在实际开发中的应用。 **JSTL(JavaServer Pages Standard Tag Library)**...

    JSTL网络标签与SSH类参考手册

    **JSTL网络标签与SSH类参考手册** JavaServer Pages Standard Tag Library (JSTL) 是一套用于简化JavaWeb开发的标签库,它提供了一系列预定义的标签,可以帮助开发者更高效地编写JSP页面,避免在页面中大量使用脚本...

Global site tag (gtag.js) - Google Analytics