<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 75,comments - 83,trackbacks - 0
    前言

    從JSP 1.1規范開始,JSP就支持在JSP中使用自定義標簽了,自定義標簽的廣泛使用造成了程序員重復定義,這樣就促成了JSTL(JavaServer Pages Standard Tag Library)的誕生。
    作者:楊通桿(http://hexun.com/yangtonggan/default.html)
    ?
    JSTL簡介

    JSTL是一個不斷完善的開放源代碼的JSP標簽庫,是由apache的jakarta小組來維護的。JSTL只能運行在支持JSP1.2和Servlet2.3規范的容器上,如tomcat 4.x。但是在即將推出的JSP 2.0中是作為標準支持的。
    JSTL目前的最新版本為1.02,最終發布版為1.0。JSTL包含兩個部分:標簽庫和EL(Expression Language表達式語言)語言。標簽庫目前支持四種標簽:
    標簽 URI 前綴 示例
    Core http://java.sun.com/jstl/core c <c:tagname ...>
    XML processing http://java.sun.com/jstl/xml x <x:tagname ...>
    I18N capable formatting http://java.sun.com/jstl/fmt fmt <fmt:tagname ...>
    Database access (SQL) http://java.sun.com/jstl/sql sql <sql:tagname ...>


    Core支持JSP中的一些基本的操作;
    XML processing支持XML文檔的處理;
    I18N capable formatting支持對JSP頁面的國際化;
    Database access (SQL)支持JSP對數據庫的操作。
    讓我先給你介紹c標簽吧.
    ?

    1.<c:out>

    :Core(核心庫)

    URI:http://java.sun.com/jsp/jstl/core

    前綴:c?

    描述:<c:out>標簽是一個最常用的標簽,用于在?JSP?中顯示數據。它的作用是用來替代通過JSP?置對象out或者<%=%>標簽來輸出對象的值。

    語法:?

    沒有Body時的語法?

    <c:out?value=”value”?[escapeXml=”{true|false}”]?[default=”defaultValue”]/>?

    有Body時的語法?

    <c:out?value=”value”?[escapeXml=”{true|false}”]>?

    這里是Body部分?

    </c:out>??

    屬性:

    屬性名

    描述

    類型

    是否接受動態值

    是否支持EL

    是否

    必須

    默認值

    說明

    value?

    需要顯示的值

    Object?

    Y

    Y

    Y

    用來定義需要求解的表達式。

    escapeXml

    是否轉換特殊字符

    boolean

    Y

    Y

    N

    true

    用于指定在使用<c:out>標記輸出諸如“<”、“>”、“”、“”和“&”之類的字符(在?HTML??XML?中具有特殊意義)時是否應該進行轉義。如果將?escapeXml?設置為true,則會自動的進行編碼處理。

    default

    缺省值

    Object

    Y

    Y

    N

    當求解后的表達式為null或者String為空時將打印這個缺省值。

    Null和錯誤說明

    假若value為null,會顯示default的值;假若沒有設定default的值,則會顯示一個空的字符串。

    實例:

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example1

    <c:out?value="${sessionScope.anyValue}"?default="no?value"?escapeXml="false"/>

    該示例將從Session查找名為“anyValue”的參數,并顯示在頁面,若沒有找到則顯示“no?value”。

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example2

    您的用戶名是:?<c:out?value=”${user.username}”?default=”guest”/>?

    顯示用戶的用戶名,如為空則顯示guest

    <c:out?value="${sessionScope.username}"/>?

    指定從session中獲取username的值顯示;

    <c:out?value="${username}"?/>?

    顯示username的值,默認是從request(page)中取,如果request中沒有名為username的對象則從session中取,session中沒有則從application(servletContext)中取,如果沒有取到任何值則不顯示

    ------------------------------------------------------------------------------------------------------------------------------------------

    2.?<c:set>

    :Core(核心庫)

    URI:http://java.sun.com/jsp/jstl/core

    前綴:c?

    描述:<c:set>標簽用于為變量或JavaBean中的變量屬性賦值的工作。這個標簽用于在某個范圍(page、request、session、application等)中使用某個名字設定特定的值,或者設定某個已經存在的javabean對象的屬性。他類似于<%request.setAttrbute("name","value");%>?

    語法:?

    語法1:?沒有body

    將value的值存儲至范圍為scope的varName變量之中

    <c:set?value="value"?var="varName"?[scope="{page|request|session|application}"]/>

    語法2:?有body

    將body內容存儲至范圍為scope的varName變量之中

    <c:set?value="value"?[scope="{page|request|session|application}"]>

    ?body.....

    </c:set>

    語法3:?將value的值存儲至target對象屬性中

    <c:set?value="value"?target="target"?property="propertyNmae"/>

    語法4:?將body內容的數據存儲至target對象屬性中

    <c:set?target="target"?property="propertyNmae">

    ?body....

    </c:set>

    ??Null?和?錯誤處理:

    語法3和語法4會產生異常錯誤,有以下兩種情況:

    ?.target?為null

    ?.target?不是java.util.Map或JavaBean對象

    假若value為null時:將由存儲變量改為移除變量

    ?.語法1:?由var和scope所定義的變量,將被移除

    ???.若scope已指定時,則PageContext.removeAttribute(varName,scope);

    ???.若scope未指定時,則PageContext.removeAttribute(varName);

    ?.語法3:?

    ???.假若target為Map時,則Map.remove(property);

    ???.假若target為JavaBean時,propertye指定的屬性為null

    注意:?var和scope這兩個屬性不能使用表達式來表示,我們不能寫成?scope="${ourScope}"或var="${a}"

    屬性:

    屬性名

    描述

    類型

    是否接受動態值

    是否支持EL

    是否

    必須

    默認值

    說明

    value

    要被存儲的值?

    Object

    true

    Y

    被計算的表達式

    var

    變量名

    String

    false

    N

    被導出的保存了value屬性計算結果的范圍變量的名稱

    scope

    范圍

    String

    true

    N

    page

    var的JSP范圍

    target

    目標?對象

    String

    true

    Y

    要設置屬性的對象。必須是JavaBean對象或java.util.Map對象

    property

    指定target對象屬性

    Object?

    true

    Y

    要設置的target對象的屬性的名稱

    實例:

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example1

    <c:set?value="this?is?andy"?var="oneString"/>

    該示例將為名為“oneString”的變量賦值為“this?is?andy”,其作用范圍為page。

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example2

    <c:set?target="${cust.address}"?property="city"?value="$"/>?

    將對象cust.address的city屬性值保存到變量city中。

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example3

    設置不同的屬性,并且指定它們的范圍:

    <c:set?value="10000"?var="maxUser"?scope="application"/>

    <c:set?value="20"?var="maxIdelTime"?scope="session"/>

    <c:set?value="next.jsp"?var="nextPage"?scope="page"/>

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example4

    <c:set?var="bid"?value="${param.bookId}"/>?

    <jsp:setProperty?name="bookDB"?property="bookId"???value="${bid}"?/>

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example5

    <%?Foo?foo?=?new?Foo();?pageContext.setAttribute("foo",?foo);?%>

    <c:out?value="${foo.date}"/><br>?<c:set?target="${foo}"?property="day"?value="1"/>?

    <c:out?value="${foo.date}"/>?

    ------------------------------------------------------------------------------------------------------------------------------------------

    3.??<c:remove>

    :Core(核心庫)

    URI:http://java.sun.com/jsp/jstl/core

    前綴:c?

    描述:<c:remove>標簽用于刪除存在于scope中的變量。類似于<%session.removeAttribute(“name”)%>?

    <%request.removeAttribute(“name”)%>...

    語法:?

    <c:remove?var="varName"?[scope="{page|request|session|application}"]/>

    屬性:

    屬性名

    描述

    類型

    是否接受動態值

    是否支持EL

    是否

    必須

    默認值

    說明

    var

    變量名

    String

    N

    N

    欲移除變量的名稱

    scope

    范圍

    String

    N

    N

    page

    var變量的JSP范圍;?若沒有指定,默認為全部查找

    ------------------------------------------------------------------------------------------------------------------------------------------

    實例:

    Example1

    <c:remove?var="sampleValue"?scope="session"/>

    ${sessionScope.sampleValue}

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example2

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

    將username變量從session范圍移除。若我們不設定scope,則<c:remove>會移除所有范圍名稱為username

    的數據。

    ------------------------------------------------------------------------------------------------------------------------------------------

    4.<c:catch>

    :Core(核心庫)

    URI:http://java.sun.com/jsp/jstl/core

    前綴:c?

    描述:<c:catch>動作用于捕獲JSP元素在其體中拋出的異常,從而提供細粒度的錯誤控制,?此異常也可以保存為一個頁面作用域變量。當錯誤發生<c:catch>和</c:catch>之間時,只有<c:catch>和</c:catch>之間的程序會被中止忽略,但整個網頁不會被中止。它包含一個var屬性,是一個描述異常的變量,該變量可選。若沒有var屬性的定義,那么僅僅捕捉異常而不做任何事情,若定義了var屬性,則可以利用var所定義的異常變量進行判斷轉發到其他頁面或提示報錯信息。

    語法:?

    <c:catch?[var="var"]>?

    //可能發生錯誤的部分

    JSP?elements?

    </c:catch>?

    屬性:????

    屬性名

    描述

    類型

    是否接受動態值

    是否支持EL

    是否

    必須

    默認值

    說明

    var?

    變量名

    String?

    N

    N

    N

    用來存儲錯誤信息的變量

    實例:

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example1

    <c:catch?var="importException">?

    <fmt:parseDate?value="${param.empDate}"?dateStyle="short"?/>?

    </c:catch>?

    <c:if?test="${importException?!=?null}">?

    <jsp:forward?page="input.jsp">?

    <jsp:param?name="msg"?value="Invalid?date?format"?/>?

    </jsp:forward>?

    </c:if>?

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example2

    <c:catch?var="err">

    ?????????${param.sampleSingleValue[9]?==?3}

    </c:catch>?

    ${err}

    當“${param.sampleSingleValue[9]?==?3}”表達式有異常時,可以從var屬性“err”得到異常的內容,通常判斷“err”是否為null來決定錯誤信息的提示。

    ------------------------------------------------------------------------------------------------------------------------------------------

    5.<c:if>

    :Core(核心庫)

    URI:http://java.sun.com/jsp/jstl/core

    前綴:c?

    描述:<c:if>動作僅當所指定的表達式計算為true時才計算其體。計算結果也可以保存為一個作用域Boolean變量。?

    語法:

    語法1:沒有體?

    <c:if?test="booleanExpression?"?

    ?var="var?"?[scope="page?|request|session|application"]/>?

    語法2:有體?

    <c:if?test="booleanExpression">

    ?JSP?elements

    </c:if>

    屬性:

    屬性名

    描述

    類型

    是否接受動態值

    是否支持EL

    是否

    必須

    默認值

    說明

    test?

    測試表達式?

    boolean?

    Y?

    Y

    如果表達式的結果為true則執行body,false則相反

    var?

    變量名

    String?

    N

    N

    用來存儲test運算后的結果,即true或false??????????????????????????

    scope?

    變量作用域

    String?

    N

    N

    page

    var變量的JSP范圍

    實例:

    <c:if?test="${empty?param.empDate}">?

    <jsp:forward?page="input.jsp">?

    <jsp:param?name="msg"?value="Missing?the?Employment?Date"?/>?

    </jsp:forward>

    ?</c:if>

    6.<c:choose>

    :Core(核心庫)

    URI:http://java.sun.com/jsp/jstl/core

    前綴:c?

    描述:<c:choose>動作用于控制嵌套<c:when>和<c:otherwise>動作的處理,它只允許第一個測試表達式計算為true的<c:when>動作得到處理;如果所有<c:when>動作的測試表達式都計算為false,則會處理一個<c:otherwise>動作。<c:choose>標簽沒有屬性,可以被認為是父標簽,<c:when>、<c:otherwise>將作為其子標簽來使用。

    語法:

    <c:choose>

    body(<when>和<otherwise>)

    </c:choose>

    限制:

    <c:choose>的本地內容只能有:

    ?.空白

    ?.1或多個<c:when>

    ?.0或多個<c:otherwise>

    屬性:

    實例:

    ----------------------------------------------------------------------------------------------------------------------------------------

    Example1

    <c:choose>?

    <c:when?test="${product.onSale}">?

    ${product.salesPrice}?On?sale!?

    </c:when>?

    <c:otherwise>?

    ${product.price}?

    </c:otherwise>?

    </c:choose>?

    ---------------------------------------------------------------------------------------------------------------------------------------

    Example2

    <c:choose>

    ?<c:when?test="${condition1}">

    ??condition1?為?true

    ?</c:when>

    ?<c:when?test="${condition2}">

    ??condition2?為?true

    ?</c:when>

    ?<c:otherwise>

    ??condition1和conditon2都為false

    ?</<c:otherwise?>

    說明:

    在同一個<c:choose>中,假如所有的<c:when>的test都不為true時,則執行<c:otherwise>的本體內容。

    在同一個<c:choose>中,假若有好幾個<c:when>都會true時,只能有一個<c:when>成立。

    </c:choose>

    ----------------------------------------------------------------------------------------------------------------------------------------

    7.<c:when>

    :Core(核心庫)

    URI:http://java.sun.com/jsp/jstl/core

    前綴:c?

    描述:<c:when>標簽等價于“if”語句,它包含一個test屬性,該屬性表示需要判斷的條件。

    語法:

    <c:when?test="testCondition">

    Body?content

    </c:when>

    屬性:

    屬性名

    描述

    類型

    是否接受動態值

    是否支持EL

    是否

    必須

    默認值

    說明

    test

    測試表達式

    boolean

    Y

    Y

    如果表達式的結果為true則執行body,false則相反?

    實例:

    8.<c:otherwise>

    :Core(核心庫)

    URI:http://java.sun.com/jsp/jstl/core

    前綴:c?

    描述:<c:otherwise>標簽沒有屬性,它等價于“else”語句。

    語法:

    <c:otherwise>

    conditional?block

    </c:otherwise>

    屬性:

    實例:

    <c:choose>、<c:when>、<c:otherwise>標簽綜合實例

    <c:choose>

    ?????????<c:when?test="${paramValues.sampleValue[2]?==?11}">

    ???????????????????not?12?not?13,it?is?11

    ?????????</c:when>

    ?????????<c:when?test="${paramValues.sampleValue[2]?==?12}">

    ???????????????????not?11?not?13,it?is?12

    ?????????</c:when>

    ?????????<c:when?test="${paramValues.sampleValue[2]?==?13}">

    ???????????????????not?11?not?12,it?is?13

    ?????????</c:when>

    ?????????<c:otherwise>

    ???????????????????not?11?、12、13

    ?????????</c:otherwise>

    </c:choose>

    jstl C標簽(Ⅱ)地址:http://m.tkk7.com/tangzurui/archive/2008/08/13/221657.html

    posted on 2008-05-19 16:37 梓楓 閱讀(5575) 評論(2)  編輯  收藏 所屬分類: jstl標簽類

    FeedBack:
    # re: jstl C標準標簽庫Ⅰ
    2009-08-27 16:17 | 開門開門
    看  回復  更多評論
      
    # re: jstl C標準標簽庫Ⅰ
    2010-02-05 10:08 | zbx134062
    謝謝。  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 日韩免费福利视频| 女人18毛片a级毛片免费| 中文字幕视频免费| 国产aⅴ无码专区亚洲av| 亚洲AV无码一区二区二三区入口| 免费国产成人高清在线观看麻豆 | 日韩a级毛片免费观看| 国产精品免费看久久久久| 国产精品亚洲αv天堂无码| 久久精品亚洲综合| 2019亚洲午夜无码天堂| 免费看一级一级人妻片| 亚洲一区二区三区写真| 亚洲黄色片在线观看| 亚洲中文字幕一二三四区| 久久久精品国产亚洲成人满18免费网站| 精品成人免费自拍视频| 丁香花免费完整高清观看| 波多野结衣中文一区二区免费| 亚洲国产精品一区二区久久hs| 亚洲国产综合在线| 亚洲欧洲高清有无| 亚洲成年人电影网站| 国产偷国产偷亚洲清高APP| a级毛片毛片免费观看永久| 欧洲黑大粗无码免费| 亚洲天堂中文字幕在线| 亚洲美女视频一区| 搜日本一区二区三区免费高清视频 | 少妇人妻偷人精品免费视频| 花蝴蝶免费视频在线观看高清版| A国产一区二区免费入口| 免费成人福利视频| 免费人成在线视频| 国产亚洲精品资在线| 国产成人精品日本亚洲专一区| 精选影视免费在线 | 午夜精品在线免费观看| 亚洲AV日韩精品久久久久久| 亚洲毛片免费观看| 久久国产一片免费观看|