乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      核心JSTL標簽庫

       COZUCHOU 2012-09-19

      JSTL 全名為Java Server Pages Standard Tag LibraryJSP Standard Tag Library,它的中文名稱為JSP 標準標簽函數(shù)庫。 

      Web 程序開發(fā)人員能夠利用JSTLEL來開發(fā)Web 程序,取代傳統(tǒng)直接在頁面上嵌入Java程序(Scripting)的做法,以提高程序可讀性、維護性和方便性。 

      JSTL是一個標準的已制定好的標簽庫,可以應用于各種領域,如:基本輸入輸出、流程控制、循環(huán)、XML文件剖析、數(shù)據(jù)庫查詢及國際化和文字格式標準化的應用等。JSTL所提供的標簽函數(shù)庫主要分為五大類:

      1)核心標簽庫 (Core tag library)

      2I18N 格式標簽庫 (I18N-capable formatting tag library)

      3SQL 標簽庫 (SQL tag library)

      4XML 標簽庫 (XML tag library)

      5)函數(shù)標簽庫 (Functions tag library)

      JSTL

      前綴

      URI

      核心標簽庫

      c

      http://java./jsp/jstl/core

      I18N格式標簽庫

      fmt

      http://java./jsp/jstl/xml

      SQL標簽庫

      sql

      http://java./jsp/jstl/sql

      XML標簽庫

      xml

      http://java./jsp/jstl/fmt

      函數(shù)標簽庫

      fn

      http://java./jsp/jstl/functions

       

      若要在JSP 網(wǎng)頁中使用JSTL ,一定要先做下面這行聲明:

      < %@ taglib prefix="c" uri="http://java./jsp/jstl/core" %> 

       

      核心標簽庫 (Core tag library)

      Core 標簽庫,又被稱為核心標簽庫,該標簽庫的工作是對于 JSP 頁面一般處理的封裝。在該標簽庫中的標簽一共有 14 個,被分為了四類,分別是:

      q         通用核心標簽: <c:out> 、 <c:set> 、 <c:remove> <c:catch> 。

      q         條件控制標簽: <c:if> 、 <c:choose> 、 <c:when> 、 <c:otherwise> 。

      q         循環(huán)控制標簽: <c:forEach> <c:forTokens> 。

      q         URL 相關標簽: <c:import> <c:url> 、 <c:redirect> <c:param> 。

      <c:out>

      <c:out>主要用來顯示數(shù)據(jù)的內(nèi)容,就像是 <%= scripting-language %> 一樣,例如:Hello ! <c:out value="${username}" />

      語法

      語法1:沒有本體(body)內(nèi)容

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

      語法2:有本體內(nèi)容

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

      default value

      </c:out>

      屬性名稱

      說明

      EL

      類型

      必須

      默認值

      value

      需要顯示出來的值

      Y

      Object

      default

      如果value的值為null則顯示default的值

      Y

      Object

      escapeXml

      是否轉換特殊字符,如:<轉換成<

      Y

      boolean

      true

       

      注意

      表格中的EL字段,表示此屬性的值是否可以為EL 表達式,例如:Y表示 attribute = "${表達式}"為符合語法的,N 則反之。

       

      Null 和錯誤處理

      · 假若 valuenull,會顯示default 的值;假若沒有設定default的值,則會顯示一個空

      的字符串。

      說明

      一般來說,<c:out>默認會將 <、>、’、” 和 & 轉換為 <、>、&#039;、&#034; &。

      假若不想轉換時,只需要設定<c:out>escapeXml 屬性為fasle 就可以了。

      范例

      <c:out value="Hello JSP 2.0 !! " />

      <c:out value="${ 3 + 5 }" />

      <c:out value="${ param.data }" default="No Data" />

      <c:out value="<p>有特殊字符</p>" />

      <c:out value="<p>有特殊字符</p>" escapeXml="false" />

      1.在網(wǎng)頁上顯示 Hello JSP 2.0 !! ;

      2.在網(wǎng)頁上顯示 8;

      3.在網(wǎng)頁上顯示由窗體傳送過來的data 參數(shù)之值,假若沒有data 參數(shù),或data 參數(shù)的值為null 時,則網(wǎng)頁上會顯示No Data

      4.在網(wǎng)頁上顯示“<p>有特殊字符</p>”;

      5.在網(wǎng)頁上顯示“有特殊字符”。

       

      <c:set>

      <c:set>主要用來將變量儲存至JSP范圍中或是JavaBean的屬性中。

      語法

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

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

      語法2:將本體內(nèi)容的數(shù)據(jù)儲存至范圍為scope varName 變量之中

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

      … 本體內(nèi)容

      </c:set>

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

      < c:set value="value" target="target" property="propertyName" />

      語法4

      將本體內(nèi)容的數(shù)據(jù)儲存至 target 對象的屬性中

      <c:set target="target" property="propertyName">

      … 本體內(nèi)容

      </c:set>

      屬性

      名稱

      說明

      EL

      類型

      必須

      默認值

      value

      要被儲存的值

      Y

      Object

      var

      欲存入的變量名稱

      N

      String

      scopevar

      變量的JSP范圍

      N

      String

      page

      target

      為一JavaBeanjava.util.Map對象

      Y

      Object

      property

      指定target對象的屬性

      Y

      String

      范例

      <c:set var="number" scope="request" value="${1 + 1}" />

      <c:set var="number" scope="session" />

      ${3 + 5}

      </c:set>

      <c:set var="number" scope="request" value="${ param.number }" />

      <c:set target="User" property="name" value="${ param.Username}" />

      1.將2 存入Request 范圍的number 變量中;

      2.將8 存入Session 范圍的number 變量中;<c:set>是把本體(body)運算后的結果來當做value的值。

      3.假若 ${param.number}null 時,則移除Request 范圍的number 變量;若${param.number}不為null 時,則將 ${param.number}的值存入Request 范圍的number 變量中;

      4.假若 ${param.Username}null 時,則設定User(JavaBean)name 屬性為null;若不為

      null 時,則將 ${param.Username}的值存入User(JavaBean)name 屬性(setter 機制)。

      注意

      上述范例的3.中,假若 ${param.number}null時,則表示移除Request范圍的number變量。

      <c:remove>

      <c:remove>主要用來移除變量。

      語法

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

      屬性

      名稱

      說明

      EL

      類型

      必須

      默認值

      var

      欲移除的變量名稱

      N

      String

      scope

      var變量的JSP范圍

      N

      String

      page

      說明

      <c:remove>必須要有var 屬性,即要被移除的屬性名稱,scope 則可有可無,例如:

      <c:remove var="number" scope="session" />

      number 變量從Session 范圍中移除。若我們不設定scope,則<c:remove>將會從Page

      Request、Session Application 中順序尋找是否存在名稱為number 的數(shù)據(jù),若能找到時,則將它移除掉,反之則不會做任何的事情。

      注意:當不指定scope時,回remove掉從page到application的var指定的變量

      <c:catch>

      <c:catch>主要用來處理產(chǎn)生錯誤的異常狀況,并且將錯誤信息儲存起來。

      語法

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

      … 欲抓取錯誤的部分

      </c:catch>

      屬性

      名稱

      說明

      EL

      類型

      必須

      默認值

      var

      用來儲存錯誤信息的變量

      N

      String

      說明

      <c:catch>主要將可能發(fā)生錯誤的部分放在<c:catch></c:catch>之間。如果真的發(fā)生錯

      誤,可以將錯誤信息儲存至varName 變量中,例如:

      <c:catch var="message">

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

      </c:catch>

      另外,當錯誤發(fā)生在<c:catch></c:catch>之間時,則只有<c:catch></c:catch>之間的程序

      會被中止忽略,但整個網(wǎng)頁不會被中止。 

      <c:if>

      <c:if>的用途就和我們一般在程序中用的if 一樣。

      語法

      語法1:沒有本體內(nèi)容(body)

      <c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]/>

      語法2:有本體內(nèi)容

      <c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>

      具體內(nèi)容

      </c:if>

      屬性

      名稱

      說明

      EL

      類型

      必須

      默認值

      Test

      如果表達式的結果為true,則執(zhí)行本體內(nèi)容,false則相反

      Y

      boolean

      var

      用來儲存test運算后的結果,即truefalse

      N

      String

      scope

      var變量的JSP范圍

      N

      String

      page

      <c:choose>

      <c:choose>本身只當做 <c:when> <c:otherwise> 的父標簽。

      語法

      <c:choose>

      本體內(nèi)容( <when> <otherwise> )

      </c:choose>

      限制

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

      ·空白

      ·1 或多個 <c:when>

      ·0 或多個 <c:otherwise>

      說明

      若使用<c:when><c:otherwise>來做流程控制時,兩者都必須為<c:choose>的子標簽.

      <c:when>

      <c:when>的用途就和我們一般在程序中用的when 一樣。

      語法

      <c:when test="testCondition" >

      本體內(nèi)容

      </c:when>

      屬性

      名稱

      說明

      EL

      類型

      必須

      默認值

      Test

      如果表達式的結果為true,則執(zhí)行本體內(nèi)容,false則相反

      Y

      boolean

       

      限制

      <c:when>必須在<c:choose></c:choose>之間

      ☆ 在同一個<c:choose>中時,<c:when>必須在<c:otherwise>之前

      說明

      <c:when>必須有test 屬性,當test中的表達式結果為true時,則會執(zhí)行本體內(nèi)容;如果為

      false時,則不會執(zhí)行。

      <c:otherwise>

      在同一個 <c:choose> 中,當所有 <c:when> 的條件都沒有成立時,則執(zhí)行<c:otherwise>

      本體內(nèi)容。

      語法

      <c:otherwise>

      本體內(nèi)容

      </c:otherwise>


      <c:forEach>

      <c:forEach> 為循環(huán)控制,它可以將集合(Collection)中的成員循序瀏覽一遍。運作方式為當

      條件符合時,就會持續(xù)重復執(zhí)行<c:forEach>的本體內(nèi)容。

      語法1:迭代一集合對象之所有成員

      <c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"][end="end"] [step="step"]>

      本體內(nèi)容

      < /c:forEach>

      語法2:迭代指定的次數(shù)

      <c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end"

      [step="step"]>

      本體內(nèi)容

      </c:forEach>

      限制

      ·假若有begin 屬性時,begin 必須大于等于 0

      ·假若有end 屬性時,必須大于begin

      ·假若有step 屬性時,step 必須大于等于0

      Null 和錯誤處理

      ·假若items null 時,則表示為一空的集合對象

      ·假若begin 大于或等于items 時,則迭代不運算

       

      Code

      <c:forEach>除了支持數(shù)組之外,還有標準J2SE 的集合類型,例如:ArrayList、List、
      LinkedList、Vector、Stack和Set 等等;另外還包括java.util.Map 類的對象.

      <c:forEach>并不只是用來瀏覽集合對象而已,讀者可以從語法2中發(fā)現(xiàn),items并不存在

      ,但是當沒有使用items 屬性時,就一定要使用begin end 這兩個屬性。

      Code

      上述范例中,我們并沒有執(zhí)行瀏覽集合對象,只是設定begin 和end 屬性的值,這樣它就
      變成一個普通的循環(huán)。此范例是將循環(huán)設定為:從1 開始跑到10,總共會重復循環(huán)10 次,并
      且將數(shù)字放到item 的屬性當中. 

      begin主要用來設定在集合對象中開始的位置(注意:第一個位置為0);end 用來設定結束的位置;而step 則是用來設定現(xiàn)在指到的成員和下一個將被指到成員之間的間隔.

      另外,<c:forEach>還提供varStatus 屬性,主要用來存放現(xiàn)在指到之成員的相關信息。例如: varStatus="s",那么將會把信息存放在名稱為s的屬性當中。varStatus屬性還有另外四個屬性:indexcount、first last,它們各自代表的意義如表:

      屬性

      類型

      意義

      index

      number

      現(xiàn)在指到成員的索引

      count

      number

      總共已經(jīng)指到成員的總數(shù)

      first

      boolean

      現(xiàn)在指到的成員是否為第一個成員

      last

      boolean

      現(xiàn)在指到的成員是否為最后一個成員

       我們可以使用varStatus 屬性取得循環(huán)正在瀏覽之成員的信息,下面為一個簡單的范例:

      Code

       

       

      還有一個例子:

      我要獲取:http://localhost:8080/t/index.jsp?a=123&b=256&com=297中的參數(shù)列表按如下:

      鍵com:297
      鍵b:256
      鍵a:123

      可以結合EL表單式實現(xiàn):

      <c:forEach items="${param}" var="b">
              鍵${b.key}:${b.value }
      <br/>
      </c:forEach>

       

       

       

      <c:forTokens> 

      <c:forTokens> 用來瀏覽一字符串中所有的成員,其成員是由定義符號(delimiters)所分隔的。
      語法:
      <c:forTokens   items="stringOfTokens"

              delims="delimiters"

              [var="varName"]

              [varStatus="varStatusName"]

              [begin="begin"]

              [end="end"]

              [step="step"]>
      本體內(nèi)容
      </c:forTokens>  


      var       用來存放現(xiàn)在指到的成員N String 否無
      items   被迭代的字符串Y String 是無
      delims     定義用來分割字符串的字符N String 是無
      varStatus 用來存放現(xiàn)在指到的相關成員信息N String 否無
      begin       開始的位置Y int 否0
      end         結束的位置Y int 否最后一個成員
      step    每次迭代的間隔數(shù)Y int 否1

      說明
      <c:forTokens>的begin、end、step、var 和varStatus 用法都和<c:forEach>一樣,因此,筆者在這里就只介紹items 和delims 兩個屬性:items 的內(nèi)容必須為字符串;而delims 是用來分割items 中定義的字符串之字符。
      范例
      下面為一個典型的<c:forTokens>的范例:

      <c:forTokens items="A,B,C,D,E" delims="," var="item" >
      ${item}
      </c:forTokens>

      上面范例執(zhí)行后,將會在網(wǎng)頁中輸出ABCDE。它會把符號“,”當做分割的標記,拆成5 個部分,也就是執(zhí)行循環(huán)5 次,但是并沒有將A,B,C,D,E 中的“,”顯示出來。items 也可以放入EL 的表達式,如下:

      復制代碼
      <%
      String phoneNumber = "123-456-7899";
      request.setAttribute(
      "userPhone", phoneNumber);
      %>
      <c:forTokens items="${userPhone}" delims="-" var="item" >
      ${item}
      </c:forTokens>
      復制代碼

      這個范例將會在網(wǎng)頁上打印1234567899,也就是把123-456-7899以“-”當做分割標記,將字符串拆為 3 份,每執(zhí)行一次循環(huán)就將瀏覽的部分放到名稱為item 的屬性當中。delims 不只指定一種字符來分割字符串,它還可以一次設定多個分割字符串用的字符。如下面這個范例:

      <c:forTokens items="A,B;C-D,E" delims=",;-" var="item" >
      ${item}
      </c:forTokens>

      此范例會在網(wǎng)頁輸出ABCDE,也就是說,delims 可以一次設定所有想當做分割字符串用的字符。其實用<c:forEach>也能做到分割字符串,寫法如下:

      <c:forEach items="A,B,C,D,E" var="item" >
      ${item}
      </c:forEach>

      上述范例同樣也會在網(wǎng)頁輸出ABCDE。<c:forEach>并沒有delims這個屬性,因 此<c:forEach>無法設定分割字符串用的字符,而<c:forEach>分割字符串用的字符只有“,”,這和使 用<c:forTokens>,delims 屬性設為“,”的結果相同。所以如果使用<c:forTokens>來分割字符串,功能和彈性上會比使用<c:forEach> 來得較大

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多