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

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

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

    愛睡覺的小耗子
    ——等待飄雪的日子...努力,努力,再努力!
    posts - 9,  comments - 33,  trackbacks - 0
    前兩天,公司同事發給我一個JSTL的學習資料,看后感覺條理清晰,一目了然!現在貼出來與大家共享

    JSTL簡介

    JSTL是一個不斷完善的開放源代碼的JSP標簽庫,是由apachejakarta小組來維護的。JSTL只能運行在支持JSP1.2Servlet2.3規范的容器上,如tomcat 4.x。但是在即將推出的JSP 2.0中是作為標準支持的。
    JSTL
    目前的最新版本為1.02,最終發布版為1.0JSTL包含兩個部分:標簽庫和ELExpression 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對數據庫的操作。

    由于本人水平有限,本文僅介紹Core標簽,如有興趣,可一起探討其它三種標簽的使用與擴充。

    EL
    語言介紹

    EL
    語言是JSTL輸出(輸入)一個JAVA表達式的表示形式。
    JSTL中,EL語言只能在屬性值中使用。EL語言只能通過建立表達式${exp1}來進行調用。在屬性值中使用表達式有三種方式。

    1
    value屬性包含一個表達式
    <some:tag value="${expr}"/>
    在這種情況下,表達式值被計算出來并根據類型轉換規則賦值給value屬性。比如:<c:out value="${username}" />中的${username}就是一個EL,它相當于JSP語句<%=request.getAttribute(username)%><%=session.getAttribute(username)%>

    2
    value屬性包含一個或多個屬性,這些屬性被文本分割或圍繞
    <some:tag value="some${expr}${expr}text${expr}"/>
    在這種情況下,表達式從左到右進行計算,并將結果轉換為字符串型(根據類型轉換規則),并將結果賦值給value屬性

    3
    value屬性僅僅包含文本
    <some:tag value="sometext"/>
    在這種情況下,字符串型屬性value將根據類型轉換規則轉換為標簽所希望的類型。

    EL
    語言的操作符
    取得某個對象或集合中的屬性值
    為了獲得集合中的屬性,EL支持以下兩種操作
    1
    . 使用.操作符來獲得有名字的屬性。例如表達式${user.username}表明對象userusername屬性
    2
    . 使用[]操作符來獲得有名字或按數字排列的屬性。
    表達式${user["username"]}和表達式${user. username }含義相同
    表達式${row[0]} 表明row集合的第一個條目。
    在這里user是一個類的對象,它的屬性username必須符合標準JavaBean的規范,即必須為username屬性定義相應的gettersetter方法。

    Empty
    操作符(空值檢查)

    使用empty操作符來決定對象、集合或字符串變量是否為空或null。例如:
    ${empty param.username}
    如果request的參數列表中的username值為null,則表達式的值為true EL也可以直接使用比較操作符與null進行比較。如${param.firstname == null}
    比較操作符

    操作符

    描述

    ==eq

    相等檢查

    !=ne

    不等檢查

    <lt

    小于檢查

    >gt

    大于檢查

    <=le

    小于等于檢查

    >=ge

    大于等于檢查


    數字運算符與邏輯運算符均與JAVA語言相同,不再列表。

    Core
    標簽庫

    1
    、 通用標簽

    <c:out>
    <c:out>
    標簽用于在JSP中顯示數據,它有如下屬性

    是否必須

    缺省值

    value

    輸出的信息,可以是EL表達式或常量

    default

    value為空時顯示信息

    escapeXml

    true則避開特殊的xml字符集

    true




    例子:

    您的用戶名是: <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)中取,如果沒有取到任何值則不顯示。

    <c:set>
    <c:set>
    標簽用于保存數據,它有如下屬性

    是否必須

    缺省值

    value

    要保存的信息,可以是EL表達式或常量

     

    target

    需要修改屬性的變量名,一般為javabean的實例

    property

    需要修改的javabean屬性

    var

    需要保存信息的變量

    scope

    保存信息的變量的范圍

    page


    如果指定了target屬性, 那么property屬性也必須指定。
    例子:

    <c:set value="${test.testinfo}" var="test2" scope=”session” />


    test.testinfo的值保存到sessiontest2中,其中test是一個javabean的實例,testinfotest對象的屬性。

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


    將對象cust.addresscity屬性值保存到變量city

    <c:remove>
    <c:remove>
    標簽用于刪除數據,它有如下屬性

    是否必須

    缺省值

    var

    要刪除的變量

    scope

    被刪除變量的范圍

    所有范圍,包括pagerequestsessionapplication


    例子:

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


    session中刪除test2變量。

    2
    、 流控制標簽

    <c:if>

    <c:if>
    標簽有如下屬性

    是否必須

    缺省值

    test

    需要評價的條件,相當于if (...){}語句中的條件

    var

    要求保存條件結果的變量名

    scope

    保存條件結果的變量范圍

    page



    <c:choose>
    這個標簽不接受任何屬性

    <c:when>
    <c:when>
    標簽有以下屬性

    是否必須

    缺省值

    test

    需要評價的條件



    <c:otherwise>
    這個標簽同樣不接受任何屬性

    例子:

    <c:if test="${user.wealthy}">
    user.wealthy is true.
    </c:if>


    如果user.wealthytrue,則顯示user.wealthy is true.

    <c:choose>
    <c:when test="${user.generous}">
    user.generous
     is true.
    </c:when>
    <c:when test="${user.stingy}">
    user.stingy is true.
    </c:when>
    <c:otherwise>
    user.generous and user.stingy are false.
    </c:otherwise>
    </c:choose>


    只有當條件user.generous返回值是true時,才顯示user.generous is true.
    只有當條件user.stingy返回值是true時,才顯示user.stingy is true.
    其它所有的情況(即user.generoususer.stingy的值都不為true)全部顯示user.generous and user.stingy are false.

    由于JSTL沒有形如if (){} else {}的條件語句,所以這種形式的語句只能用<c:choose><c:when><c:otherwise>標簽共同來完成了

    3
    、 循環控制標簽

    <c:forEach>
    <c:forEach>
    標簽用于通用數據,它有以下屬性

    是否必須

    缺省值

    items

    進行循環的項目

    begin

    開始條件

    0

    end

    結束條件

    集合中的最后一個項目

    step

    步長

    1

    var

    代表當前項目的變量名

    varStatus

    顯示循環狀態的變量



    例子:

    <c:forEach items="${vectors}" var="vector">
    <c:out value="${vector}"/>
    </c:forEach>


    相當于java語句

    for (int i=0;i<vectors.size();i++) {
    out.println(vectors.get(i));
    }


    在這里vectors是一個java.util.Vector對象,里面存放的是String數據,vector是當前循環條件下String對象。實際上這里的vectors可以是任何實現了java.util. Collection接口的對象。


    <c:forEach begin="0" end="100" var="i" step="1">
    count=<c:out value="${i}"/><br>
    </c:forEach>


    輸出:
    count=0
    ...
    count=100

    <c:forTokens>
    <c:forTokens>
    標簽有以下屬性

    是否必須

    缺省值

    items

    進行循環的項目

    delims

    分割符

    begin

    開始條件

    0

    end

    結束條件

    集合中的最后一個項目

    step

    步長

    1

    var

    代表當前項目的變量名

    varStatus

    顯示循環狀態的變量



    例子


    <c:forTokens items="a:b:c:d" delims=":" var="token">
    <c:out value="${token}"/>
    </c:forTokens>


    這個標簽的使用相當于java.util.StringTokenizer類。在這里將字符串a:b:c:d以:分開循環四次,token是循環到當前分割到的字符串。

    4.
    導入文件和URL

    JSTL
    核心標簽庫支持使用<c:import>來包含文件,使用<c:url>來打印和格式化URL,使用<c:redirect>來重定向URL

    <c:import>
    <c:import>
    標簽包含另外一個頁面代碼到當前頁,它有以下屬性

    是否必須

    缺省值

    url

    需要導入頁面的url

    context

    /后跟本地web應用程序的名字

    當前應用程序

    charEncoding

    用于導入數據的字符集

    ISO-8859-1

    var

    接受導入文本的變量名

    page

    scope

    接受導入文本的變量的變量范圍

    1

    varReader

    用于接受導入文本的java.io.Reader變量名

    varStatus

    顯示循環狀態的變量



    <c:url>
    <c:url>
    標簽輸出一個url地址,它有以下屬性

    是否必須

    缺省值

    url

    url地址

    context

    /后跟本地web應用程序的名字

    當前應用程序

    charEncoding

    用于導入數據的字符集

    ISO-8859-1

    var

    接受處理過的url變量名,該變量存儲url

    輸出到頁

    scope

    存儲url的變量名的變量范圍

    page



    例子:


    <c:import url="http://www.url.com/edit.js" var="newsfeed"/>


    url http://www.url.com/edit.js包含到當前頁的當前位置,并將url保存到newsfeed變量中


    <a href="<c:url url="/index.jsp"/>"/>


    在當前頁的當前位置輸出<a />http://www.yourname.com是當前頁的所在的位置。


    <c:redirect>
    <c:redirect>
    標簽將請求重新定向到另外一個頁面,它有以下屬性

    是否必須

    缺省值

    url

    url地址

    context

    /后跟本地web應用程序的名字

    當前應用程序


    例子:


    <c:redirect url="http://www.yourname.com/login.jsp"/>


    將請求重新定向到http://www.yourname.com/login.jsp頁,相當于response.setRedirect("http://www.yourname.com/login.jsp");

    <c:param>
    <c:param>
    標簽用來傳遞參數給一個重定向或包含頁面,它有以下屬性

    是否必須

    缺省值

    name

    request參數中設置的變量名

    value

    request參數中設置的變量值


    例子:


    <c:redirect url="login.jsp">
    <c:param name="id" value="888"/>
    </c:redirect>


    將參數888id為名字傳遞到login.jsp頁面,相當于login.jsp?id=888


    JSTL
    的優點
    1
    、 在應用程序服務器之間提供了一致的接口,最大程序地提高了WEB應用在各應用服務器之間的移植。
    2
    、 簡化了JSPWEB應用程序的開發。
    3
    、 以一種統一的方式減少了JSP中的scriptlet代碼數量,可以達到沒有任何scriptlet代碼的程序。在我們公司的項目中是不允許有任何的scriptlet代碼出現在JSP中。
    4
    、 允許JSP設計工具與WEB應用程序開發的進一步集成。相信不久就會有支持JSTLIDE開發工具出現。

     

    注:

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

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>

    posted on 2007-11-22 09:29 Harriet 閱讀(643) 評論(0)  編輯  收藏 所屬分類: JSTL

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


    網站導航:
     

    公 告

    心要沉下去,思緒才會浮上來,水平也就上來了


    <2007年11月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    積分與排名

    • 積分 - 86220
    • 排名 - 669

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产另类久久久精品| 久久久无码精品亚洲日韩蜜臀浪潮 | 国产大陆亚洲精品国产| 亚洲人午夜射精精品日韩| 日本免费在线观看| 一本色道久久88—综合亚洲精品| 国产成人精品免费直播| 国产成人AV免费观看| 亚洲日韩精品国产一区二区三区| 亚洲精品国产自在久久| 在线免费观看国产| 国产亚洲精品成人久久网站| 久久亚洲精品国产精品黑人| 女人被弄到高潮的免费视频 | 亚洲精品美女久久7777777| 亚洲人成电影在线播放| 日韩亚洲国产高清免费视频| 国产免费一级高清淫曰本片| 亚洲AV无码专区在线亚| 亚洲熟妇无码八AV在线播放| 妞干网手机免费视频| 曰批全过程免费视频在线观看无码| 亚洲综合无码一区二区痴汉| 亚洲国产精品一区二区第一页| 影音先锋在线免费观看| 无码一区二区三区免费| 免费手机在线看片| 亚洲天堂男人影院| 亚洲国产成人久久综合一| 亚洲国产精品激情在线观看| 亚洲人成电影网站免费| 热99RE久久精品这里都是精品免费| 亚洲av永久无码一区二区三区 | 亚洲精品乱码久久久久蜜桃 | 亚洲A∨精品一区二区三区下载| 亚洲午夜未满十八勿入| 亚洲黄片手机免费观看| 日韩中文字幕免费| 91成人免费在线视频| 99热精品在线免费观看| 在线观看免费无码视频|