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

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

    • 分享

      入門(mén)教程:JSP標(biāo)準(zhǔn)模板庫(kù)

       duduwolf 2005-09-24

      簡(jiǎn)介
      JSP標(biāo)準(zhǔn)模板庫(kù)(JSTL)是SUN公司發(fā)布的一個(gè)針對(duì)JSP開(kāi)發(fā)的新組件。JSTL允許你使用標(biāo)簽(tags)來(lái)進(jìn)行JSP頁(yè)面開(kāi)發(fā),而不是使用多數(shù)JSP程序員已經(jīng)習(xí)慣了的scriptlet代碼方式開(kāi)發(fā)。JSTL幾乎能夠做到傳統(tǒng)JSP scriptlet代碼能做的任何事情。你可能會(huì)疑惑,為什么我們需要另一種這樣的HTML生成語(yǔ)言呢?

      STL允許JSP程序員使用tags而不是JAVA代碼來(lái)編程。為了展示為什么這個(gè)是更優(yōu)越的,下面將給出示例。我們會(huì)檢查一個(gè)非常簡(jiǎn)單的從1數(shù)到10的JSP頁(yè)面。我們將通過(guò)兩種方法來(lái)檢查,一種是基于JSP的scriptlet,一種是JSTL。當(dāng)這個(gè)計(jì)數(shù)器頁(yè)面的例子是用JSP scriptlet來(lái)編寫(xiě)時(shí),JSP頁(yè)面如下所示:

      <html>
        <head>
          <title>Count to 10 in JSP scriptlet</title>
        </head>
        <body>
      <%
        for(int i=1;i<=10;i++)
      {%>
      <%=i%><br/>
      <%
      }
      %>
        </body>
      </html>

      正如你在上例中看到的看到的那樣,使用scriptlet代碼產(chǎn)生的頁(yè)面源代碼會(huì)包含混合的HTML標(biāo)簽和JAVA語(yǔ)句。這種混合型的編程方式不是最佳的方式,其主要原因有以下幾點(diǎn)。

      主要的原因是它的可讀性。這個(gè)可讀性主要依賴(lài)于人類(lèi)和計(jì)算機(jī)。JSTL可以允許程序員查看一個(gè)只包含完整HTML和類(lèi)似HTML的標(biāo)簽的頁(yè)面。

      SP scriptlet代碼的可讀性不適合人類(lèi)。這種混合的scriptlet和HTML代碼對(duì)于計(jì)算機(jī)來(lái)說(shuō)也很難讀。尤其是針對(duì)那些HTML官方工具如Dreamweaver和Microsoft FrontPage,所表現(xiàn)出來(lái)的不直觀性更突出。目前,大多數(shù)HTML官方工具會(huì)以不可編輯塊(non-editable blocks)的形式來(lái)隔離JSP scriptlet代碼。這種HTML官方工具通常是不能直接修改JSP scriptlet代碼的。

      下面這段代碼展示這個(gè)計(jì)數(shù)器范例如何使用JSTL方式來(lái)編寫(xiě)。正如你所看到的,這個(gè)代碼列表有不變性,僅僅一個(gè)標(biāo)簽被使用。HTML和JSTL標(biāo)簽混合起來(lái)產(chǎn)生了這個(gè)程序。

      <%@ taglib uri="http://java./jstl/core" prefix="c" %>
      <html>
        <head>
          <title>Count to 10 Example (using JSTL)</title>
        </head>

        <body>
          <c:forEach var="i" begin="1" end="10" step="1">
            <c:out value="${i}" />

            <br />
          </c:forEach>
        </body>
      </html>

      當(dāng)你檢查上面這個(gè)例子的代碼時(shí),你會(huì)看到,JSP頁(yè)面只包含標(biāo)簽。上面的代碼使用諸如<head>和<br>這樣的HTML標(biāo)簽。這種標(biāo)簽用法不限制于HTML標(biāo)簽。這段代碼也可以使用諸如<c:forEach>和<c:out>這樣的JSTL標(biāo)簽。在本文中,將會(huì)介紹一些JSTL的基礎(chǔ)。

      安裝JSTL
      要使用JSTL,你必須安裝有一個(gè)JSP1.2(或者更高版本)的容器。最普通的JSP容器是Apache Tomcat。你能夠從http://jakarta./tomcat/這里下載到。獨(dú)立的Tomcat允許你使用常規(guī)的JSP scriptlet代碼。要使用JSTL,你必須在Tomcat中安裝JSTL。JSTL的主要URL是 http://java./products/jsp/jstl/。要使用JSTL,必須解壓這個(gè)文件,然后將它安裝到Tomcat的正確位置。

      要在Tomcat中安裝JSTL,有下面三個(gè)步驟:

      拷貝JSTL JAR文件到Tomcat的lib目錄中.

      如果你使用的是Windows, 那么lib目錄最可能的位置是C:\Program Files\Apache Tomcat 4.0\webapps\ROOT\WEB-INF\lib。你應(yīng)該拷貝這些JAR包到你的Tomcat JAR目錄。

      拷貝JSTL TLD文件到Tomcat的web-inf目錄中

      你檢查JSTL發(fā)布文件時(shí),你應(yīng)該會(huì)注意到有8個(gè)文件是以TLD擴(kuò)展名結(jié)尾的。所有這8個(gè)文件都應(yīng)該復(fù)制到你的web-inf目錄中。

      修改web.xml文件包含這些TLD文件。

      最后,你必須修改你的web.xml,添加8個(gè)標(biāo)簽庫(kù)的表項(xiàng)(entry)。需要添加的表項(xiàng)如下所示:
      <taglib>
          <taglib-uri>http://java./jstl/fmt</taglib-uri>
          <taglib-location>/WEB-INF/fmt.tld</taglib-location>
      </taglib>

      <taglib>
          <taglib-uri>http://java./jstl/fmt-rt</taglib-uri>
          <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
      </taglib>

      <taglib>
          <taglib-uri>http://java./jstl/core</taglib-uri>
          <taglib-location>/WEB-INF/c.tld</taglib-location>
      </taglib>

      <taglib>
          <taglib-uri>http://java./jstl/core-rt</taglib-uri>
          <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
      </taglib>

      <taglib>
          <taglib-uri>http://java./jstl/sql</taglib-uri>
          <taglib-location>/WEB-INF/sql.tld</taglib-location>
      </taglib>

      <taglib>
          <taglib-uri>http://java./jstl/sql-rt</taglib-uri>
          <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
      </taglib>

      <taglib>
          <taglib-uri>http://java./jstl/x</taglib-uri>
          <taglib-location>/WEB-INF/x.tld</taglib-location>
      </taglib>

      <taglib>
          <taglib-uri>http://java./jstl/x-rt</taglib-uri>
          <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
      </taglib>

      完成上面這三步后,你現(xiàn)在可以準(zhǔn)備測(cè)試你的JSTL安裝了??梢酝ㄟ^(guò)創(chuàng)建一個(gè)包含JSTL的JSP頁(yè)面來(lái)驗(yàn)證。一個(gè)最簡(jiǎn)單的范例程序就是上面的那個(gè)計(jì)數(shù)器程序。你應(yīng)該將它放置在你的Webroot目錄中(C:\Program Files\Apache Tomcat 5.0\webapps\ROOT)。一旦Tomcat啟動(dòng)后,你應(yīng)該能夠通過(guò)瀏覽 http://127.0.0.1:8080/count.jsp來(lái)查看這個(gè)頁(yè)面。

      如果你沒(méi)有正確安裝JSTL,那么可能不會(huì)出現(xiàn)錯(cuò)誤信息。如果JSTL不能解釋你的標(biāo)簽含義,那么它在Web瀏覽器上會(huì)直接跳過(guò)。然后Web瀏覽器將解釋這些未知的HTML標(biāo)簽。多數(shù)瀏覽器僅僅只是忽略這些未知的HTML標(biāo)簽。

      JSTL標(biāo)簽庫(kù)
      JSTL通常被認(rèn)為是一種單標(biāo)簽庫(kù)。但JSTL實(shí)際上有4個(gè)標(biāo)簽庫(kù)。這些標(biāo)簽庫(kù)被概括為如下:

      核心標(biāo)簽庫(kù)—包含一些Web應(yīng)用的必要的標(biāo)簽。核心標(biāo)簽庫(kù)的實(shí)例包括循環(huán),表達(dá)式賦值和基本輸入輸出。.


      格式化/國(guó)際化標(biāo)簽庫(kù)—包括被用來(lái)解析數(shù)據(jù)的標(biāo)簽庫(kù)。這種標(biāo)簽會(huì)解析數(shù)據(jù),比如日期,不同的場(chǎng)所區(qū)域等。


      數(shù)據(jù)庫(kù)標(biāo)簽庫(kù)—包含被用來(lái)訪問(wèn)SQL數(shù)據(jù)庫(kù)的標(biāo)簽。這些標(biāo)簽通常僅僅只創(chuàng)建原形(prototype)程序。這個(gè)是因?yàn)榇蠖鄶?shù)程序不會(huì)直接從JSP頁(yè)面中來(lái)處理數(shù)據(jù)庫(kù)訪問(wèn)。數(shù)據(jù)庫(kù)訪問(wèn)應(yīng)該被嵌入到能夠被JSP頁(yè)面所訪問(wèn)的EJB中。


      XML標(biāo)簽庫(kù)—包含被用來(lái)訪問(wèn)XML元素的標(biāo)簽。因?yàn)閄ML廣泛使用于Web開(kāi)發(fā),XML的處理是JSTL的一個(gè)重要的特征。 
      在本文中,我們將僅僅只對(duì)核心標(biāo)簽做一個(gè)簡(jiǎn)單介紹。我們將考察一個(gè)簡(jiǎn)單的范例,來(lái)說(shuō)明如何處理用戶(hù)在表單中輸入的數(shù)據(jù)。在我們開(kāi)始檢查程序之前,我們必須先看看JSTL是如何處理表達(dá)式的,JSTL的表達(dá)式處理是通過(guò)使用EL表達(dá)式語(yǔ)言來(lái)完成的,僅僅只能在JSP2.0被使用。下一節(jié),我們會(huì)考察EL表達(dá)式語(yǔ)言。

      EL表達(dá)式語(yǔ)言
      JSP2.0的一個(gè)主要的組件就是這個(gè)新的叫做EL的表達(dá)式語(yǔ)言。EL被廣泛用在JSTL中。然而,重要的是記住,EL是JSP的功能而不是JSTL的。被用在JSP2.0中JSP scriptlet代碼能夠包含EL表達(dá)式。下面這行代碼演示了JSP scriptlet代碼中的EL:

      <p>
        Your total, including shipping is ${total+shipping}
      </p>

      正如你看到的,total和shipping相加后會(huì)產(chǎn)生HTML并且在瀏覽器中顯示它們的值。這些表達(dá)式也可以在JSTL標(biāo)簽中使用。JSTL1.0的一個(gè)重要問(wèn)題是,JSTL不能用在JSP1.2的版本上。因?yàn)镴SP1.2不支持EL,所以有必要提供一些額外的JSTL標(biāo)簽來(lái)幫助EL的使用。例如,如果你想使用JSTL來(lái)顯示上面的表達(dá)式,你可以使用下面的代碼。

      <p>
        Your total, including shipping is <c:out var="${total+shipping"/>
      </p>

      值得注意的是,JSTL不需要JSP2.0來(lái)運(yùn)行。通過(guò)提供一個(gè)能夠顯示EL表達(dá)式的標(biāo)簽,就可以達(dá)到這樣的需求。

      JSTL范例
      我們將考察一個(gè)簡(jiǎn)單的使用JSTL的范例。在這個(gè)例子里,我們將考察Web應(yīng)用中的一個(gè)常見(jiàn)過(guò)程。我們會(huì)看到如何提交(POST)一個(gè)表單,并處理POST的結(jié)果。程序代碼如下:

      <%@ taglib uri="http://java./jstl/core" prefix="c" %>
      <html>
        <head>
          <title>If with Body</title>
        </head>

        <body>
          <c:if test="${pageContext.request.method==‘POST‘}">
            <c:if test="${param.guess==‘Java‘}">You guessed it!
            <br />

            <br />

            <br />
            </c:if>

            <c:if test="${param.guess!=‘Java‘}">You are wrong
            <br />

            <br />

            <br />
            </c:if>
          </c:if>

          <form method="post">Guess what computer language
                              I am thinking of?
          <input type="text" name="guess" />

          <input type="submit" value="Try!" />

          <br/>
          </form>
        </body>
      </html>

      這個(gè)簡(jiǎn)單的Web頁(yè)面顯示一個(gè)表單,要求用戶(hù)猜測(cè)程序所想的計(jì)算機(jī)語(yǔ)言。當(dāng)然,計(jì)算機(jī)想的是“Java”。這個(gè)頁(yè)面通過(guò)檢查“是否已提交”來(lái)開(kāi)始。這使得表單和處理表單的代碼可以放在同一個(gè)頁(yè)面中。是通過(guò)下面的JSTL if語(yǔ)句實(shí)現(xiàn)的。

      <c:if test="${pageContext.request.method==‘POST‘}">

      現(xiàn)在你看到了,<c:if>標(biāo)簽使用EL表達(dá)式來(lái)決定是否請(qǐng)求的方式是POST的。如果數(shù)據(jù)被post到頁(yè)面,那么用戶(hù)輸入的他們的猜想值就會(huì)存儲(chǔ)在名為“guest”的參數(shù)中。這是因?yàn)?#8220;guest”是表單輸入項(xiàng)的名字。我們現(xiàn)在必須檢查是否這個(gè)參數(shù)等于“Java”。這個(gè)是通過(guò)下面的<c:if>標(biāo)簽來(lái)完成:

      <c:if test="${param.guess==‘Java‘}">
                You guessed it!
            </c:if>


      正如你所看到的,如果表達(dá)式為true,<c:if>標(biāo)簽的標(biāo)簽體就被執(zhí)行。在本文中,我們開(kāi)始考察了JSTL如何被安裝,以及它是如何運(yùn)轉(zhuǎn)的,也提供了一些JSTL小范例幫助大家理解。

      JSTL的核心標(biāo)簽也包含循環(huán),疊代器和變量處理。通過(guò)使用標(biāo)簽,你能在collections里進(jìn)行iterate,訪問(wèn)用戶(hù)的會(huì)話(huà)數(shù)據(jù)(session data),執(zhí)行其他的核心任務(wù)等。除了核心標(biāo)簽庫(kù),XML,數(shù)據(jù)庫(kù)和格式化標(biāo)簽庫(kù)也提供了更多高級(jí)的用處。

      (End)

      注:EL Expression Language這里翻譯成EL表達(dá)式語(yǔ)言,有的是翻譯成EL表達(dá)語(yǔ)言,是一個(gè)意思。

      Translated by Caiyi0903(Willpower),2004.2.19

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多