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

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

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

    JSTL詳解(一)

    概述

    JSP 頁(yè)面中,使用標(biāo)簽庫(kù)代替?zhèn)鹘y(tǒng)的 Java 片段語(yǔ)言來(lái)實(shí)現(xiàn)頁(yè)面的顯示邏輯已經(jīng)不是新技術(shù)了,然而,由自定義標(biāo)簽很容易造成重復(fù)定義和非標(biāo)準(zhǔn)的實(shí)現(xiàn)。鑒于此,出現(xiàn)了 JSTL JSP Standard Tag Library )。大多數(shù) JSP 頁(yè)面邏輯提供了實(shí)現(xiàn)的 JSTL 技術(shù),該技術(shù)本身就是一個(gè)標(biāo)簽庫(kù)。

    Sun 公司 Java 規(guī)范標(biāo)準(zhǔn)的 JSTL apache jakarta 組織負(fù)責(zé)維護(hù)。作為開(kāi)源的標(biāo)準(zhǔn)技術(shù),它一直在不斷地完善。 JSTL 的發(fā)布包有兩個(gè)版本: Standard-1.0 Taglib 、 Standard-1.1 Taglib ,它們?cè)谑褂脮r(shí)是不同的。

    q???????? Standard-1.0 Taglib JSTL1.0 )支持 Servlet2.3 JSP1.2 規(guī)范, Web 應(yīng)用服務(wù)器 Tomcat4 支持這些規(guī)范,而它的發(fā)布也在 Tomcat 4.1.24 測(cè)試通過(guò)了。

    q???????? Standard-1.1 Taglib JSTL1.1 )支持 Servlet2.4 JSP2.0 規(guī)范, Web 應(yīng)用服務(wù)器 Tomcat5 支持這些規(guī)范,它的發(fā)布在 Tomcat 5.0.3 測(cè)試通過(guò)了。

    在本章的介紹中,將以由 Sun 發(fā)布的 Standard-1.1 Taglib 標(biāo)簽庫(kù)為主,而 apache jakarta 組織發(fā)布的開(kāi)源標(biāo)簽庫(kù),可以從 http://jakarta.apache.org/taglibs/ 找到所需要的幫助。 Sun 發(fā)布的標(biāo)準(zhǔn) JSTL1.1 標(biāo)簽庫(kù)有以下幾個(gè)標(biāo)簽:

    q???????? 核心標(biāo)簽庫(kù):包含 Web 應(yīng)用的常見(jiàn)工作,比如:循環(huán)、表達(dá)式賦值、基本輸入輸出等。

    q???????? 國(guó)際化標(biāo)簽庫(kù):用來(lái)格式化顯示數(shù)據(jù)的工作,比如:對(duì)不同區(qū)域的日期格式化等。

    q???????? 數(shù)據(jù)庫(kù)標(biāo)簽庫(kù):可以做訪問(wèn)數(shù)據(jù)庫(kù)的工作。

    q???????? XML 標(biāo)簽庫(kù):用來(lái)訪問(wèn) XML 文件的工作,這是 JSTL 標(biāo)簽庫(kù)的一個(gè)特點(diǎn)。

    q???????? 函數(shù)標(biāo)簽庫(kù):用來(lái)讀取已經(jīng)定義的某個(gè)函數(shù)。

    此外, JSTL 還提供了 EL 表達(dá)式語(yǔ)言( Expression Language )來(lái)進(jìn)行輔助的工作。

    JSTL 標(biāo)簽 庫(kù)由標(biāo)簽庫(kù)和 EL 表達(dá)式語(yǔ)言兩個(gè)部分組成。 EL JSTL 1.0 規(guī)范中被引入,當(dāng)時(shí)用來(lái)作為 Java 表達(dá)式來(lái)工作,而該表達(dá)式必須配合 JSTL 的標(biāo)簽庫(kù)才能得到需要的結(jié)果。

    說(shuō)明:在 JSTL 1.1 規(guī)范中, JSP2.0 容器已經(jīng)能夠獨(dú)立的理解任何 EL 表達(dá)式。 EL 可以獨(dú)立出現(xiàn)在 JSP 頁(yè)面的任何角落。本文隨后的內(nèi)容將以 JSTL 1.1 規(guī)范作為介紹的重點(diǎn)。

    9.2.1? JSTL EL 表達(dá)式語(yǔ)言簡(jiǎn)介

    EL 是從 JavaScript 腳本語(yǔ)言得到啟發(fā)的一種表達(dá)式語(yǔ)言,它借鑒了 JavaScript 多類型轉(zhuǎn)換無(wú)關(guān)性的特點(diǎn)。在使用 EL scope 中得到參數(shù)時(shí)可以自動(dòng)轉(zhuǎn)換類型,因此對(duì)于類型的限制更加寬松。 Web 服務(wù)器對(duì)于 request 請(qǐng)求參數(shù)通常會(huì)以 String 類型來(lái)發(fā)送,在得到時(shí)使用的 Java 語(yǔ)言腳本就應(yīng)該是 request.getParameter(“XXX”) ,這樣的話,對(duì)于實(shí)際應(yīng)用還必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換。而 EL 就將用戶從這種類型轉(zhuǎn)換的繁瑣工作脫離出來(lái),允許用戶直接使用 EL 表達(dá)式取得的值,而不用關(guān)心它是什么類型。

    下面的示例就是一個(gè) EL 表達(dá)式,見(jiàn)例 9.1 。

    9.1 :簡(jiǎn)單 EL 表達(dá)式

    <%@ page contentType="text/html; charset=UTF-8"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    ? <body>

    ??? ${sampleValue + 1} <br>

    ? </body>

    </html>

    這個(gè)示例將在 JSP 頁(yè)面顯示為“ 1 ”, EL 表達(dá)式必須以“ ${XXX} ”來(lái)表示,其中“ XXX ”部分就是具體表達(dá)式內(nèi)容,“ ${} ”將這個(gè)表達(dá)式內(nèi)容包含在其中作為 EL 表達(dá)式的定義。本示例可以在滿足 JSP2.0 規(guī)范的任何 Web 應(yīng)用服務(wù)器中使用。

    9.2.2? EL 表達(dá)式的默認(rèn)變量

    一個(gè) EL 表達(dá)式包含變量和操作符兩個(gè)內(nèi)容。任何存在于 JSP 作用范圍的 JavaBean 都可以被轉(zhuǎn)化成 EL 表達(dá)式來(lái)使用,它所包含的默認(rèn)變量如下:

    1 .默認(rèn)變量 pageScope requestScope 、 sessionScope 、 applicationScope

    4 個(gè)默認(rèn)變量包含 Scope 作用范圍的參數(shù)集合,相當(dāng)于被保存在 java.util.Map 中的某個(gè)參數(shù)。下面看簡(jiǎn)單的示例 9.2

    9.2 :使用 sessionScope 變量的 EL 表達(dá)式

    <%request.getSession().setAttribute("sampleValue", new Integer(10));%>

    ${sessionScope.sampleValue}

    取得保存在 Session 中參數(shù)的 sessionScope 變量的 EL 表達(dá)式,“ . ”是 property 訪問(wèn)操作符,在這里表示從 Session 中取得“鍵”為“ sampleValue ”的參數(shù),并顯示出來(lái)。顯示結(jié)果為“ 10 ”。

    2 .默認(rèn)變量 param paramValues

    這兩個(gè)默認(rèn)變量包含請(qǐng)求參數(shù)的集合, param 表明請(qǐng)求包含的參數(shù)為單一控件, paramValues 表明請(qǐng)求包含的參數(shù)為控件數(shù)組。下面看一個(gè)簡(jiǎn)單示例 9.3

    9.3 :提交請(qǐng)求的頁(yè)面和接受的頁(yè)面

    <%@ page contentType="text/html; charset=UTF-8"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    ? <body>

    ? ???? <form action="SampleJsp.jsp">

    ??? <input type="text" name="sampleValue" value="10">

    ??? <input type="text" name="sampleValue" value="11">

    ??? <input type="text" name="sampleValue" value="12">

    ??? <input type="text" name="sampleSingleValue" value="SingleValue">

    ??? <input type="submit" value="Submit">

    ??? </form>

    ? </body>

    </html>

    在這個(gè)頁(yè)面中定義了兩組控件,控件名為“ sampleValue ”的是一套控件數(shù)組,控件名為“ sampleSingleValue ”的是單一控件,通過(guò)遞交將請(qǐng)求參數(shù)傳送到 SampleJsp.jsp 。

    <%@ page contentType="text/html; charset=UTF-8"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    ? <body>

    ??? ${paramValues.sampleValue[2]} <br>

    ??? ${param.sampleSingleValue} <br>

    ? </body>

    </html>

    這是請(qǐng)求轉(zhuǎn)發(fā)到的頁(yè)面,通過(guò) EL 表達(dá)式的 paramValues 變量得到控件數(shù)組中最后一個(gè)控件的遞交參數(shù),通過(guò) EL 表達(dá)式的 param 變量得到單一控件的遞交參數(shù)。控件數(shù)組參數(shù)的 EL 表達(dá)式使用“ [] ”來(lái)指定數(shù)組下標(biāo)。本示例將顯示控件數(shù)組中最后一個(gè)控件的值“ 12 ”和單一控件的值“ SingleValue ”。

    3 .默認(rèn)變量 header 、 headerValues

    這兩個(gè)默認(rèn)變量包含請(qǐng)求參數(shù)頭部信息的集合, header 變量表示單一頭部信息, headerValues 則表示數(shù)組型的頭部信息。

    4 .默認(rèn)變量 cookie

    包含所有請(qǐng)求的 cookie 集合,集合中的每個(gè)對(duì)象對(duì)應(yīng) javax.servlet.http.Cookie

    5 .默認(rèn)變量 initParam

    包含所有應(yīng)用程序初始化參數(shù)的集合。

    6 .默認(rèn)變量 pageContext

    等價(jià)于 page 環(huán)境類 javax.servlet.jsp.PageContext 的實(shí)例,用來(lái)提供訪問(wèn)不同的請(qǐng)求參數(shù)。

    11 個(gè)默認(rèn)變量幾乎包含了 Web 應(yīng)用的所有基本操作,若一個(gè)表達(dá)式不使用這些變量而直接使用參數(shù)名,那么就采用就近原則。該表達(dá)式將使用最近取得的參數(shù)值。



    posted on 2007-01-18 09:57 nbt 閱讀(4267) 評(píng)論(1)  編輯  收藏 所屬分類: Servele&JSP和js

    評(píng)論

    # re: JSTL詳解(一) 2010-03-31 15:24 若夜

    不錯(cuò),蠻詳細(xì)的?。?!  回復(fù)  更多評(píng)論   

    <2007年1月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊(cè)

    收藏夾

    Java技術(shù)網(wǎng)站

    友情鏈接

    國(guó)內(nèi)一些開(kāi)源網(wǎng)站

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 一本大道一卡二大卡三卡免费 | 亚洲欧美黑人猛交群| 在线视频亚洲一区| 最近中文字幕免费大全| 西西大胆无码视频免费| 亚洲精品在线视频| 亚洲国产日产无码精品| 免费人妻精品一区二区三区| 50岁老女人的毛片免费观看| 一级毛片直播亚洲| 亚洲网站视频在线观看| 免费无码国产在线观国内自拍中文字幕 | 久久高潮一级毛片免费| 青青草免费在线视频| 亚洲精品夜夜夜妓女网| 亚洲精华液一二三产区| 一级毛片**不卡免费播| 亚洲女同成人AⅤ人片在线观看 | 久久久久免费视频| 最近免费中文字幕大全视频 | 最新国产精品亚洲| 暖暖免费日本在线中文| 免费jjzz在在线播放国产| 亚洲制服丝袜在线播放| 在线观看片免费人成视频播放| 国产麻豆免费观看91| 亚洲日本一区二区三区| 一区二区视频免费观看| 免费看美女让人桶尿口| 亚洲综合网美国十次| 光棍天堂免费手机观看在线观看| 国产jizzjizz免费视频| 精品久久亚洲中文无码| 免费精品无码AV片在线观看| a级亚洲片精品久久久久久久| 亚洲国产精品无码久久九九大片 | 日韩免费在线中文字幕| 嫩草视频在线免费观看| 亚洲精品国产情侣av在线| 国产成人无码区免费内射一片色欲 | 97免费人妻无码视频|