經典入門教程:JSP標準模板庫(下)

來源:互聯網
上載者:User
經典入門教程:JSP標準模板庫(下)JSTL標籤庫

JSTL通常被認為是一種單標籤庫。但JSTL實際上有4個標籤庫。這些標籤庫被概括為如下:

  • 核心標籤庫—包含一些Web應用的必要的標籤。核心標籤庫的執行個體包括迴圈,運算式賦值和基本輸入輸出。.

  • 格式化/國際化標籤庫—包括被用來解析資料的標籤庫。這種標籤會解析資料,比如日期,不同的場所地區等。
  • 資料庫標籤庫—包含被用來訪問SQL資料庫的標籤。這些標籤通常僅僅只建立原形(prototype)程式。這個是因為大多數程式不會直接從JSP頁面中來處理資料庫訪問。資料庫訪問應該被嵌入到能夠被JSP頁面所訪問的EJB中。
  • XML標籤庫—包含被用來訪問XML元素的標籤。因為XML廣泛使用於Web開發,XML的處理是JSTL的一個重要的特徵。 

在本文中,我們將僅僅只對核心標籤做一個簡單介紹。我們將考察一個簡單的範例,來說明如何處理使用者在表單中輸入的資料。在我們開始檢查程式之前,我們必須先看看JSTL是如何處理運算式的,JSTL的運算式處理是通過使用EL運算式語言來完成的,僅僅只能在JSP2.0被使用。下一節,我們會考察EL運算式語言。

EL運算式語言

JSP2.0的一個主要的組件就是這個新的叫做EL的運算式語言。EL被廣泛用在JSTL中。然而,重要的是記住,EL是JSP的功能而不是JSTL的。被用在JSP2.0中JSP scriptlet代碼能夠包含EL運算式。下面這行代碼示範了JSP scriptlet代碼中的EL:

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

正如你看到的,total和shipping相加後會產生HTML並且在瀏覽器中顯示它們的值。這些運算式也可以在JSTL標籤中使用。JSTL1.0的一個重要問題是,JSTL不能用在JSP1.2的版本上。因為JSP1.2不支援EL,所以有必要提供一些額外的JSTL標籤來協助EL的使用。例如,如果你想使用JSTL來顯示上面的運算式,你可以使用下面的代碼。

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

值得注意的是,JSTL不需要JSP2.0來運行。通過提供一個能夠顯示EL運算式的標籤,就可以達到這樣的需求。

JSTL範例

我們將考察一個簡單的使用JSTL的範例。在這個例子裡,我們將考察Web應用中的一個常見過程。我們會看到如何提交(POST)一個表單,並處理POST的結果。程式碼如下:

<%@ taglib uri="http://java.sun.com/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>

這個簡單的Web頁面顯示一個表單,要求使用者猜測程式所想的電腦語言。當然,電腦想的是“Java”。這個頁面通過檢查“是否已提交”來開始。這使得表單和處理表單的代碼可以放在同一個頁面中。是通過下面的JSTL if語句實現的。

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

現在你看到了,<c:if>標籤使用EL運算式來決定是否請求的方式是POST的。如果資料被post到頁面,那麼使用者輸入的他們的猜想值就會儲存在名為“guest”的參數中。這是因為“guest”是表單輸入項的名字。我們現在必須檢查是否這個參數等於“Java”。這個是通過下面的<c:if>標籤來完成:

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

正如你所看到的,如果運算式為true,<c:if>標籤的標籤體就被執行。在本文中,我們開始考察了JSTL如何被安裝,以及它是如何運轉的,也提供了一些JSTL小範例協助大家理解。

JSTL的核心標籤也包含迴圈,疊代器和變數處理。通過使用標籤,你能在collections裡進行iterate,訪問使用者的會話資料(session data),執行其他的核心任務等。除了核心標籤庫,XML,資料庫和格式化標籤庫也提供了更多進階的用處。

(End)

註:EL Expression Language這裡翻譯成EL運算式語言,有的是翻譯成EL表達語言,是一個意思。

Translated by Caiyi0903(Willpower),2004.2.19

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.