<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規(guī)范開(kāi)始,JSP就支持在JSP中使用自定義標(biāo)簽了,自定義標(biāo)簽的廣泛使用造成了程序員重復(fù)定義,這樣就促成了JSTL(JavaServer Pages Standard Tag Library)的誕生。
    作者:楊通桿(http://hexun.com/yangtonggan/default.html)
    ?
    JSTL簡(jiǎn)介

    JSTL是一個(gè)不斷完善的開(kāi)放源代碼的JSP標(biāo)簽庫(kù),是由apache的jakarta小組來(lái)維護(hù)的。JSTL只能運(yùn)行在支持JSP1.2和Servlet2.3規(guī)范的容器上,如tomcat 4.x。但是在即將推出的JSP 2.0中是作為標(biāo)準(zhǔn)支持的。
    JSTL目前的最新版本為1.02,最終發(fā)布版為1.0。JSTL包含兩個(gè)部分:標(biāo)簽庫(kù)和EL(Expression Language表達(dá)式語(yǔ)言)語(yǔ)言。標(biāo)簽庫(kù)目前支持四種標(biāo)簽:
    標(biāo)簽 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支持對(duì)JSP頁(yè)面的國(guó)際化;
    Database access (SQL)支持JSP對(duì)數(shù)據(jù)庫(kù)的操作。
    讓我先給你介紹c標(biāo)簽吧.
    ?

    1.<c:out>

    庫(kù):Core(核心庫(kù))

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

    前綴:c?

    描述:<c:out>標(biāo)簽是一個(gè)最常用的標(biāo)簽,用于在?JSP?中顯示數(shù)據(jù)。它的作用是用來(lái)替代通過(guò)JSP內(nèi)?置對(duì)象out或者<%=%>標(biāo)簽來(lái)輸出對(duì)象的值。

    語(yǔ)法:?

    沒(méi)有Body時(shí)的語(yǔ)法?

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

    有Body時(shí)的語(yǔ)法?

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

    這里是Body部分?

    </c:out>??

    屬性:

    屬性名

    描述

    類型

    是否接受動(dòng)態(tài)值

    是否支持EL

    是否

    必須

    默認(rèn)值

    說(shuō)明

    value?

    需要顯示的值

    Object?

    Y

    Y

    Y

    無(wú)

    用來(lái)定義需要求解的表達(dá)式。

    escapeXml

    是否轉(zhuǎn)換特殊字符

    boolean

    Y

    Y

    N

    true

    用于指定在使用<c:out>標(biāo)記輸出諸如“<”、“>”、“”、“”和“&”之類的字符(在?HTML??XML?中具有特殊意義)時(shí)是否應(yīng)該進(jìn)行轉(zhuǎn)義。如果將?escapeXml?設(shè)置為true,則會(huì)自動(dòng)的進(jìn)行編碼處理。

    default

    缺省值

    Object

    Y

    Y

    N

    無(wú)

    當(dāng)求解后的表達(dá)式為null或者String為空時(shí)將打印這個(gè)缺省值。

    Null和錯(cuò)誤說(shuō)明

    假若value為null,會(huì)顯示default的值;假若沒(méi)有設(shè)定default的值,則會(huì)顯示一個(gè)空的字符串。

    實(shí)例:

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

    Example1

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

    該示例將從Session查找名為“anyValue”的參數(shù),并顯示在頁(yè)面,若沒(méi)有找到則顯示“no?value”。

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

    Example2

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

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

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

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

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

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

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

    2.?<c:set>

    庫(kù):Core(核心庫(kù))

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

    前綴:c?

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

    語(yǔ)法:?

    語(yǔ)法1:?沒(méi)有body

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

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

    語(yǔ)法2:?有body

    將body內(nèi)容存儲(chǔ)至范圍為scope的varName變量之中

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

    ?body.....

    </c:set>

    語(yǔ)法3:?將value的值存儲(chǔ)至target對(duì)象屬性中

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

    語(yǔ)法4:?將body內(nèi)容的數(shù)據(jù)存儲(chǔ)至target對(duì)象屬性中

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

    ?body....

    </c:set>

    ??Null?和?錯(cuò)誤處理:

    語(yǔ)法3和語(yǔ)法4會(huì)產(chǎn)生異常錯(cuò)誤,有以下兩種情況:

    ?.target?為null

    ?.target?不是java.util.Map或JavaBean對(duì)象

    假若value為null時(shí):將由存儲(chǔ)變量改為移除變量

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

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

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

    ?.語(yǔ)法3:?

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

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

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

    屬性:

    屬性名

    描述

    類型

    是否接受動(dòng)態(tài)值

    是否支持EL

    是否

    必須

    默認(rèn)值

    說(shuō)明

    value

    要被存儲(chǔ)的值?

    Object

    true

    Y

    無(wú)

    被計(jì)算的表達(dá)式

    var

    變量名

    String

    false

    N

    無(wú)

    被導(dǎo)出的保存了value屬性計(jì)算結(jié)果的范圍變量的名稱

    scope

    范圍

    String

    true

    N

    page

    var的JSP范圍

    target

    目標(biāo)?對(duì)象

    String

    true

    Y

    無(wú)

    要設(shè)置屬性的對(duì)象。必須是JavaBean對(duì)象或java.util.Map對(duì)象

    property

    指定target對(duì)象屬性

    Object?

    true

    Y

    無(wú)

    要設(shè)置的target對(duì)象的屬性的名稱

    實(shí)例:

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

    Example1

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

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

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

    Example2

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

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

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

    Example3

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

    <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>

    庫(kù):Core(核心庫(kù))

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

    前綴:c?

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

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

    語(yǔ)法:?

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

    屬性:

    屬性名

    描述

    類型

    是否接受動(dòng)態(tài)值

    是否支持EL

    是否

    必須

    默認(rèn)值

    說(shuō)明

    var

    變量名

    String

    N

    N

    無(wú)

    欲移除變量的名稱

    scope

    范圍

    String

    N

    N

    page

    var變量的JSP范圍;?若沒(méi)有指定,默認(rèn)為全部查找

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

    實(shí)例:

    Example1

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

    ${sessionScope.sampleValue}

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

    Example2

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

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

    的數(shù)據(jù)。

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

    4.<c:catch>

    庫(kù):Core(核心庫(kù))

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

    前綴:c?

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

    語(yǔ)法:?

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

    //可能發(fā)生錯(cuò)誤的部分

    JSP?elements?

    </c:catch>?

    屬性:????

    屬性名

    描述

    類型

    是否接受動(dòng)態(tài)值

    是否支持EL

    是否

    必須

    默認(rèn)值

    說(shuō)明

    var?

    變量名

    String?

    N

    N

    N

    無(wú)

    用來(lái)存儲(chǔ)錯(cuò)誤信息的變量

    實(shí)例:

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

    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}

    當(dāng)“${param.sampleSingleValue[9]?==?3}”表達(dá)式有異常時(shí),可以從var屬性“err”得到異常的內(nèi)容,通常判斷“err”是否為null來(lái)決定錯(cuò)誤信息的提示。

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

    5.<c:if>

    庫(kù):Core(核心庫(kù))

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

    前綴:c?

    描述:<c:if>動(dòng)作僅當(dāng)所指定的表達(dá)式計(jì)算為true時(shí)才計(jì)算其體。計(jì)算結(jié)果也可以保存為一個(gè)作用域Boolean變量。?

    語(yǔ)法:

    語(yǔ)法1:沒(méi)有體?

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

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

    語(yǔ)法2:有體?

    <c:if?test="booleanExpression">

    ?JSP?elements

    </c:if>

    屬性:

    屬性名

    描述

    類型

    是否接受動(dòng)態(tài)值

    是否支持EL

    是否

    必須

    默認(rèn)值

    說(shuō)明

    test?

    測(cè)試表達(dá)式?

    boolean?

    Y?

    Y

    無(wú)

    如果表達(dá)式的結(jié)果為true則執(zhí)行body,false則相反

    var?

    變量名

    String?

    N

    N

    無(wú)

    用來(lái)存儲(chǔ)test運(yùn)算后的結(jié)果,即true或false??????????????????????????

    scope?

    變量作用域

    String?

    N

    N

    page

    var變量的JSP范圍

    實(shí)例:

    <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>

    庫(kù):Core(核心庫(kù))

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

    前綴:c?

    描述:<c:choose>動(dòng)作用于控制嵌套<c:when>和<c:otherwise>動(dòng)作的處理,它只允許第一個(gè)測(cè)試表達(dá)式計(jì)算為true的<c:when>動(dòng)作得到處理;如果所有<c:when>動(dòng)作的測(cè)試表達(dá)式都計(jì)算為false,則會(huì)處理一個(gè)<c:otherwise>動(dòng)作。<c:choose>標(biāo)簽沒(méi)有屬性,可以被認(rèn)為是父標(biāo)簽,<c:when>、<c:otherwise>將作為其子標(biāo)簽來(lái)使用。

    語(yǔ)法:

    <c:choose>

    body(<when>和<otherwise>)

    </c:choose>

    限制:

    <c:choose>的本地內(nèi)容只能有:

    ?.空白

    ?.1或多個(gè)<c:when>

    ?.0或多個(gè)<c:otherwise>

    屬性:

    無(wú)

    實(shí)例:

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

    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?>

    說(shuō)明:

    在同一個(gè)<c:choose>中,假如所有的<c:when>的test都不為true時(shí),則執(zhí)行<c:otherwise>的本體內(nèi)容。

    在同一個(gè)<c:choose>中,假若有好幾個(gè)<c:when>都會(huì)true時(shí),只能有一個(gè)<c:when>成立。

    </c:choose>

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

    7.<c:when>

    庫(kù):Core(核心庫(kù))

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

    前綴:c?

    描述:<c:when>標(biāo)簽等價(jià)于“if”語(yǔ)句,它包含一個(gè)test屬性,該屬性表示需要判斷的條件。

    語(yǔ)法:

    <c:when?test="testCondition">

    Body?content

    </c:when>

    屬性:

    屬性名

    描述

    類型

    是否接受動(dòng)態(tài)值

    是否支持EL

    是否

    必須

    默認(rèn)值

    說(shuō)明

    test

    測(cè)試表達(dá)式

    boolean

    Y

    Y

    無(wú)

    如果表達(dá)式的結(jié)果為true則執(zhí)行body,false則相反?

    實(shí)例:

    8.<c:otherwise>

    庫(kù):Core(核心庫(kù))

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

    前綴:c?

    描述:<c:otherwise>標(biāo)簽沒(méi)有屬性,它等價(jià)于“else”語(yǔ)句。

    語(yǔ)法:

    <c:otherwise>

    conditional?block

    </c:otherwise>

    屬性:

    無(wú)

    實(shí)例:

    <c:choose>、<c:when>、<c:otherwise>標(biāo)簽綜合實(shí)例

    <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標(biāo)簽(Ⅱ)地址:http://m.tkk7.com/tangzurui/archive/2008/08/13/221657.html

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

    FeedBack:
    # re: jstl C標(biāo)準(zhǔn)標(biāo)簽庫(kù)Ⅰ
    2009-08-27 16:17 | 開(kāi)門開(kāi)門
    # re: jstl C標(biāo)準(zhǔn)標(biāo)簽庫(kù)Ⅰ
    2010-02-05 10:08 | zbx134062
    謝謝。  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产精品亚洲w码日韩中文| 日韩精品免费一线在线观看| 国产福利在线观看免费第一福利| 中文字幕亚洲综合精品一区| 久久久精品免费视频| 亚洲好看的理论片电影| 久久国产免费一区二区三区 | 美女免费视频一区二区三区| 免费大香伊蕉在人线国产| 在线亚洲v日韩v| 亚洲爽爽一区二区三区| 久久久久久噜噜精品免费直播| 在线A亚洲老鸭窝天堂| 日批视频网址免费观看| 亚洲va无码手机在线电影| 无码国产精品一区二区免费16| 亚洲黄色中文字幕| 亚色九九九全国免费视频| 最新亚洲春色Av无码专区| 特级淫片国产免费高清视频| 老司机免费午夜精品视频| 国产亚洲精品国看不卡| 日本免费污片中国特一级| 激情内射亚洲一区二区三区| 国产精品1024永久免费视频 | 暖暖免费高清日本一区二区三区| 亚洲妇女无套内射精| 亚洲AV伊人久久青青草原| 最近国语视频在线观看免费播放| 久久久综合亚洲色一区二区三区 | 亚洲国产日韩成人综合天堂| 中国国产高清免费av片| 亚洲AV无码AV男人的天堂| 1024免费福利永久观看网站| 亚洲成av人片天堂网无码】| mm1313亚洲精品国产| 97在线免费视频| 亚洲第一网站免费视频| 全免费a级毛片免费看无码| 特级无码毛片免费视频| 久久精品国产亚洲综合色|