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

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

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

    隨筆-84  評論-56  文章-0  trackbacks-0

    JavaServer Pages Standard Tag Libray(1.1),其中文名字為JSP標準標簽函數庫。JSTL是一個標準的已
    制定好的標簽庫,可以應用于各種領域,如:基本輸入輸出,流程控制,循環,XML文件剖析,數據庫查
    詢以及國際化和文字格式標準化的應用等。JSTL所提供的標簽庫分為以下五大類:
    核心標簽庫(Core tag Liabry)主要有:基本輸入輸出,流程控制,迭代操作和URL操作。
    在JSP中使用JSTL中的標簽庫時,必須使用<%@taglib%>指令,并且設定prefix和uri的值得,通常設定:
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    這樣就可以使用核心標簽庫了。

    .表達式操作
    表達式操作分類中包含四個標簽: <c:out>,<c:set>,<c:remove>和<c:catch>
    <c:out>:重要用來顯示數據的內容,類似與<%=s.c.r.i.p.ting-language%>。它的語法如下:
    語法1: 沒有body內容
    <c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"]/>

    語法2: 有body內容
    <c:out value="value"   [escapeXml="{true|false}"]>
       default value
    </c:out>

    Attribute
    -----------------------------------------------------------------------------------------------------------------------
    名稱                       說明                                                                EL      類型      必須        默認值
    value                   需要顯示的值                                                      Y       Object     是           無
    default                如果value值為null,則顯示default的值                   Y       Object     否           無
    escapeXml         是否轉換特殊字符,如: <轉換為&It                  Y       Object     否           true
    ----------------------------------------------------------------------------------------------------------------------
    Null和錯誤說明
    假若value為null,會顯示default的值;假若沒有設定default的值,則會顯示一個空的字符串。

    <c:set>:主要用來把變量存儲至JSP范圍或是JavaBean的屬性中。
    語法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>

    Attribute
    ----------------------------------------------------------------------------------------
    名稱                     說明                                               EL      類型       必須       默認值
    value              要被存儲的值                                       Y       Object       否           無
    var                 欲存入的變量名                                   N       String         否           無
    scope             var變量的JSP范圍                                N       String         否          page
    target             為一JavaBean或java.util.Map對象         Y       Object        否           無
    property         指定target對象屬性                               Y       String         否           無
    ------------------------------------------------------------------------------------------
    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}"

    <c:remove>:主要用來移除變量。
    語法:
    <c:remove var="varName" [scope="{page|request|session|application}"]/>

    Attribute
    ----------------------------------------------------------------------------------------
    名稱                  說明                                      EL      類型      必須        默認值
    var              欲移除變量的名稱                      N       String      是               無
    scope            var變量的JSP范圍                     N       String      否              page
    ----------------------------------------------------------------------------------------
    說明:
    <c:remove>必須要有var屬性,即要被移除的屬性名稱,scope則可有可無,如:
    <c:remove var="username" scope="session"/>
    將username變量從session范圍移除。若我們不設定scope,則<c:remove>會移除所有范圍名稱為username
    的數據。

    <c:catch>:主要用來處理產生錯誤的異常情況,并且將信息保存起來。
    語法:
    <c:catch [var="varName"]>
    ...欲抓取錯誤的部分...
    </c:catch>

    Attribute
    ----------------------------------------------------------------------------------------
    名稱                  說明                                            EL      類型      必須        默認值
    var            用來存儲錯誤信息的變量                  N       String        否           無
    -----------------------------------------------------------------------------------------
    說明:
    <c:catch>主要將可能發生錯誤的部分放在<c:catch>和</c:catch>之間。如果真的發生錯誤,可將錯誤
    信息保存至變量varName標量中,如:
    <c:catch var="message">
         //可能發生錯誤的部分
    </catch>
    另外,當錯誤發生<c:catch>和</c:catch>之間時,只有<c:catch>和</c:catch>之間的程序會被中止忽
    略,但整個網頁不會被中止。

    流程控制
    流程控制分類中包含四個標簽:<c:if>,<c:choose>,<c:when>和<c:otherwise>。

    <c:if>:的用途和我們在一般程序中寫的if一樣。
    語法:
    語法1:沒有body
    <c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>

    語法2: 有body
    <c:if test="testCondition" [var="varName"] [scope="{page|request|session|appliation}"]>
       ...body....
    </c:if>

    Attribute
    ------------------------------------------------------------------------------------------------------------------------
    名稱                            說明                                                                            EL      類型         必須        默認值
    test                    如果表達式的結果為true則執行body,false則相反               Y       boolean        是            無
    var                    用來存儲test運算后的結果,即true或false                            N      String           否            無
    scope                var變量的JSP范圍                                                                   N      String           否           page
    ------------------------------------------------------------------------------------------------------------------------
    說明:
    <c:if>標簽必須要有test屬性,body里除了能是靜態文本之外可以是任何JSP代碼,標簽或HTML代碼。

    <c:choose>:本身只當作<c:when>和<c:otherwise>的父標簽。
    語法:
    <c:choose>
       body(<when>和<otherwise>)
    </c:choose>
    限制:
    <c:choose>的本地內容只能有:
    .空白
    .1或多個<c:when>
    .0或多個<c:otherwise>
    如:
    <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:choose>中,假如所有的<c:when>的test都不為true時,則執行<c:otherwise>的本體內容。
    在同一個<c:choose>中,假若有好幾個<c:when>都會true時,只能有一個<c:when>成立。

    迭代操作
    迭代(Iterator)操作主要包含兩個標簽: <c:forEach>和<c:forTokens>。

    <c:forEach>為循環控制,它可以將集合(Collection)中的成員循序瀏覽一遍。運做方式為當條件符合
    時,就會持續重復執行<c:forEach>的body內容。
    語法:
    語法1: 迭代一集合對象之所有成員
    <c:forEach [var="varName"] items="collection" [varStatus="varStatusName"]
                [begin="begin"] [end="end"] [step="step"]>
    ...body內容.....
    <c:forEach>

    語法2: 迭代指定的次數
    <c:forEach [var="varName"] [varStatus="varStatusName"]
                begin="begin" end="end" [step="step"]>
    ...body內容.....
    <c:forEach>

    Attribute
    --------------------------------------------------------------------------------------------------------------------------
    名稱                  說明                                                    EL      類型              必須        默認值
    var           用來存放現在指到的成員                           N       String                否            無

                                                                                                    Arrays
                                                                                                   Collection
                                                                                                    Iterator              否            無
    items          被迭代的集合對象                                     Y         Enumeration            
                                                                                                    Map
                                                                                                     String

    varStatus      用來存放到指到的相關成員信息           N         String                否            無
    begin            開始的位置                                              Y           int                     否            0
    end               結束的位置                                              Y           int                    否            最后一個成員
    setp              每次迭代的間隔數                                  Y           int                    否             1
    -------------------------------------------------------------------------------------------------------------------------
    Null 和 錯誤處理
    .假若items為null時,則表示為一空的集合對象
    .假若begin大于或等于items時,則迭代不運算
    注意:
    varName的范圍只存在<c:forEach>的本體中,如果超出了本題,則不能取得varName的值。如:
    <c:forEach items="${atts}" var="item">
    </c:forEach>
    ${item}</br>
    ${item}則不會顯示item的內容。<c:forEach>除了支持數組之外,還有標準的J2SE的結合類型,例如:
    ArrayList,List,LinkedList,Vector,Stack和Set等等;另外包括java.util.Map類的對象,例如:
    HashMap,Hashtable,Properties,Provider和Attributes。

    另外<c:forEach>還提供了varStatus屬性,主要用來存放現在指到成員的相關信息。例如:我們寫成
    varStatus="s",那么就會把信息存放到名稱為s的屬性當中。varStatus屬性還提供另外四個屬性:index,
    count,fist和last,它們個自的意義如下:
    ------------------------------------------------------------------------------------------
        屬性                     類型                                    意義
        index                    number                       現在指到成員的索引
        count                    number                       總共指到成員的總和
        first                      boolean                      現在指到成員是否為第一個
        last                      boolean                      現在指到成員是否為最后一個
    -------------------------------------------------------------------------------------------
    如下例子:
    <%@page contentType="text/html;charset=gb2312"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    String atts[] = new String[5];
    atts[0]="hello";
    atts[1]="this";
    atts[2]="is";
    atts[3]="a";
    atts[4]="girl";
    request.setAttritue("atts",atts);
    %>
    <c:forEach items="${atts}" var="item" varStatus="s">
    <h2><c:out value="${item}"/>的四種屬性></h2>
    index: ${s.index}</br>
    count: ${s.count}</br>
    first: ${s.first}</br>
    last:   ${s.last}</br>
    </c:forEach>

    <c:forTokens>
    <c:forTokens>:用來瀏覽一字符串中所有的成員,起成員是由定義符號(delimiters)所分隔的。
    語法:
    <c:forTokens items="stringFoTokens" delims="delimmmmiters" [var="varName"]
                  [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
    ...body內容....
    </c:forTokens>

    Attribute
    --------------------------------------------------------------------------------------------------------------------
    名稱                                     說明                                                EL      類型       必須        默認值
    var                    用來存放現在指到的成員                                 Y       String        否           無
    items                 被迭代的字符串                                                 Y       String        是           無
    delims               定義用來分割字符串的字符                             N       String        是           無
    varStatus           用來存放現在指到的相關成員信息                 N       String        否           無
    begin                開始的位置                                                          Y        int            否            0
    end                  結束的位置                                                           Y        int           否            最后一個成員
    step                 每次迭代間隔數                                                   Y        int            否            1
    ---------------------------------------------------------------------------------------------------------------------
    限制:
    .假若有begin屬性時,begin必須大于等于0
    .假若有end屬性時,必須大于begin
    .假若有step屬性時,step必須大于等于1

    Null 和 錯誤處理
    .假如itmes為null時,則表示為有空的集合對象
    .假若begin大于等于items的大小時,則迭代不運算

    例子:
    <c:forToken items="A,B,C,D,E,F,G" delims="," var="item>
    ${item}
    </c:forToken>
    items屬性也可以用EL,例如:
    <%
    String phonenumber="123-456-7899";
    request.setAttribute("userPhone",phonenumber);
    %>
    <c:forTokens items="${userPhone}" delims="-" var="item">
    ${item}
    </c:forTokens>

    URL操作
    JSTL包含三個URL操作有關的標簽,分別是: <c:import>,<c:redirect>和<c:url>。它們的主要功能是:
    用來將其他文件的內容包含起來,網頁的向導,還有url的產生。

    posted on 2008-11-21 01:47 憶風 閱讀(602) 評論(0)  編輯  收藏 所屬分類: Java EE
    主站蜘蛛池模板: 伊人久久综在合线亚洲91| 免费无遮挡无码视频网站| 国产精品亚洲精品日韩已方 | 国产美女无遮挡免费网站| 亚洲人成网网址在线看| 久久午夜免费视频| 久久国产亚洲精品| 国产成人免费a在线视频app| 亚洲av无码日韩av无码网站冲| 日韩免费视频播播| 人成免费在线视频| 久久九九亚洲精品| 亚洲电影在线免费观看| 亚洲av永久无码精品三区在线4| 成年18网站免费视频网站| 亚洲乱码无人区卡1卡2卡3| 免费国产在线观看老王影院 | 好紧我太爽了视频免费国产 | 亚洲Av无码精品色午夜| 久久精品一本到99热免费| 国产精品亚洲四区在线观看| 热99re久久精品精品免费| 一区二区三区视频免费观看| 亚洲欧洲国产精品你懂的| 久久久久久国产精品免费免费| 亚洲国产精品无码久久| 久久亚洲国产成人影院网站| 久热免费在线视频| 亚洲国产精品网站在线播放| 国产亚洲精品拍拍拍拍拍| 美女内射毛片在线看免费人动物| 亚洲欧美国产日韩av野草社区| 亚洲无码精品浪潮| 亚洲无砖砖区免费| 色婷婷精品免费视频| 亚洲国产人成在线观看69网站| 噜噜嘿在线视频免费观看| 色www永久免费网站| 亚洲中文字幕精品久久| 亚洲色欲久久久综合网| 欧美最猛性xxxxx免费|