JAVA新技術-JSP

來源:互聯網
上載者:User
js
  作 者 : 仙人掌工作室

   在 Sun 正式發布 JSP(JavaServer Pages) 之後,這種新的 Web 應用程式開發技術很快引起了人們的關注。 JSP 為建立高度動態 Web 應用程式提供了一個獨特的開發環境。
按照 Sun 的說法, JSP 能夠適應市場上包括 Apache WebServer 、 IIS4.0 在內的 85% 的伺服器產品。即使您對 ASP “一往情深”,我們認為,關注 JSP 的發展仍舊很有必要。
   ㈠ JSP 與 ASP 的簡單比較
   JSP 與 Microsoft 的 ASP 技術非常相似。兩者都提供在 HTML 程式碼中混合某種程式碼、由語言引擎解釋執行程式代碼的能力。在 ASP 或 JSP 環境下, HTML 程式碼主要負責描述資訊的顯示樣式,而程式碼則用來描述處理邏輯。普通的 HTML 頁面只依賴於 Web 服務器,而 ASP 和 JSP 頁面需要附加的語言引擎分析和執行程式代碼。程式碼的執行結果被重新嵌入到 HTML 程式碼中,然後一起發送給瀏覽器。 ASP 和 JSP 都是面向 Web 服務器的技術,用戶端瀏覽器不需要任何附加的軟體支援。
   ASP 的程式設計語言是 VBScript 之類的指令碼語言, JSP 使用的是 Java ,這是兩者最明顯的區別。此外, ASP 與 JSP 還有一個更為本質的區別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程式碼。在 ASP 下, VBScript 代碼被 ASP 引擎解釋執行;在 JSP 下,代碼被編譯成 Servlet 並由 JAVA 虛擬機器執行,這種編譯操作僅在對JSP 頁面的第一次請求時發生。
   ㈡運行環境
   Sun 公司的 JSP 首頁在 http://www.javasoft.com/products/jsp/index.html ,從這裡還可以下載 JSP 規範,這些規範定義了供應商在建立 JSP 引擎時所必須遵從的
一些規則。
   執行 JSP 代碼需要在伺服器上安裝 JSP 引擎。此處我們使用的是 Sun 的 JavaServer Web Development Kit ( JSWDK )。為便於學習,這個軟體包提供了大量可供修改的樣本。安裝 JSWDK 之後,只需執行 startserver 命令即可啟動伺服器。在預設配置下伺服器在連接埠 8080 監聽,使用http://localhost:8080 即可開啟預設頁面。
   在運行 JSP 樣本頁面之前,請注意一下安裝 JSWDK 的目錄,特別是“ work ”子目錄下的內容。執行樣本頁面時,可以在這裡看到 JSP 頁面如何被轉換成 Java 源檔案,然後又被編譯成 class 檔案(即 Servlet )。 JSWDK 軟體包中的樣本頁面分為兩類,它們或者是 JSP 檔案,或者是包含一個表單的 HTML 檔案,這些表單均由 JSP 代碼處理。與 ASP 一樣, JSP 中的 Java 代碼均在伺服器端執行。因此,在瀏覽器中使用“查看源檔案”菜單是無法看到 JSP 原始碼的,只能看到結果 HTML 程式碼。所有樣本的原始碼均通過一個單獨的“ examples ”頁面提供。
   ㈢ JSP 頁面樣本
   下面我們分析一個簡單的 JSP 頁面。您可以在 JSWDK 的 examples 目錄下建立另外一個目錄存放此檔案,檔案名稱字可以任意,但副檔名必須為 .jsp 。從下面的代碼清單中可以看到, JSP 頁面除了比普通 HTML 頁面多一些 Java 代碼外,兩者具有基本相同的結構。 Java 代碼是通過 < % 和 %> 符號加入到 HTML 程式碼中間的,它的主要功能是產生並顯示一個從 0 到 9 的字串。在這  個字串的前面和後面都是一些通過 HTML 程式碼輸出的文本。
  < HTML>
  < HEAD>< TITLE>JSP 頁面 < /TITLE>< /HEAD>
  < BODY>
  < %@ page language="java" %>
  < %! String str="0"; %>
  < % for (int i=1; i < 10; i++) {
  str = str + i;
  } %>
  JSP 輸出之前。
  < P>
  < %= str %>
  < P>
  JSP 輸出之後。
  < /BODY>
  < /HTML>
  這個 JSP 頁面可以分成幾個部分來分析。
  首先是 JSP 指令。它描述的是頁面的基本資料,如所使用的語言、是否維持工作階段狀態、是否使用緩衝等。 JSP 指令由 < %@ 開始, %> 結束。在本例中,指令“ < %@ page language="java" %> ”只簡單地定義了本例使用的是 Java 語言(當前,在 JSP 規範中 Java 是唯一被支援的語言)。
  接下來的是 JSP 聲明。 JSP 聲明可以看成是定義類這一層次的變數和方法的地方。 J
SP 聲明由 < %! 開始, %> 結束。如本例中的“ < %! String str="0"; %> ”定義了一個字串變數。在每一項聲明的後面都必須有一個分號,就象在普通 Java 類中聲明成員變數一樣。
  位於 < % 和 %> 之間的代碼塊是描述 JSP 頁面處理邏輯的 Java 代碼,如本例中的 for 迴圈所示。
  最後,位於 < %= 和 %> 之間的代碼稱為 JSP 運算式,如本例中的“ < %= str %> ”所示。 JSP 運算式提供了一種將 JSP 產生的數值嵌入 HTML 頁面的簡單方法。
二、工作階段狀態管理
   工作階段狀態維持是 Web 應用程式開發人員必須面對的問題。有多種方法可以用來解決這個問題,如使用 Cookies 、隱藏的表單輸入欄位,或直接將狀態資訊附加到 URL 中。 Java Servlet 提供了一個在多個請求之間持續有效會話對象,該對象允許使用者儲存和提取工作階段狀態資訊。 JSP 也同樣支援 Servlet 中的這個概念。
   在 Sun 的 JSP 指南 中可以看到許多有關隱含對象的說明(隱含的含義是,這些對象可以直接引用,不需要顯式地聲明,也不需要專門的代碼建立其執行個體)。例如 request 對象,它是 HttpServletRequest 的一個子類。該對象包含了所有有關當前瀏覽器請求的資訊,包括 Cookies , HTML 表單變數等等。 session 對象也是這樣一個隱含對象。這個對象在第一個 JSP 頁面被裝載時自動建立,並被關聯到 request 對象上。與 ASP 中的會話對象相似, JSP 中的 session 對象對於那些希望通過多個頁面完成一個事務的應用是非常有用的。
   為說明 session 對象的具體應用,接下來我們用三個頁面類比一個多頁面的 Web應用。第一個頁面( q1.html )僅包含一個要求輸入使用者名稱字的 HTML 表單,代碼如下:
  < HTML>
  < BODY>
  < FORM METHOD=POST ACTION="q2.jsp">
  請輸入您的姓名:
  < INPUT TYPE=TEXT NAME="thename">
  < INPUT TYPE=SUBMIT VALUE="SUBMIT">
  < /FORM>
  < /BODY>
  < /HTML>
   第二個頁面是一個 JSP 頁面( q2.jsp ),它通過 request 對象提取 q1.html表單中的 thename 值,將它儲存為 name 變數,然後將這個 name 值儲存到 session對象中。 session 對象是一個名字 / 值對的集合,在這裡,名字 / 值對中的名字為“
thename ”,值即為 name 變數的值。由於 session 對象在會話期間是一直有效,因此這裡儲存的變數對後繼的頁面也有效。 q2.jsp 的另外一個任務是詢問第二個問題。下面是它的代碼:
  < HTML>
  < BODY>
  < %@ page language="java" %>
  < %! String name=""; %>
  < %
  name = request.getParameter("thename");
  session.putValue("thename", name);
  %>
 您的姓名是: < %= name %>
  < p>
  < FORM METHOD=POST ACTION="q3.jsp">
 您喜歡吃什麼 ?
  < INPUT TYPE=TEXT NAME="food">
  < P>
  < INPUT TYPE=SUBMIT VALUE="SUBMIT">
  < /FORM>
  < /BODY>
  < /HTML>
   第三個頁面也是一個 JSP 頁面( q3.jsp ),主要任務是顯示問答結果。它從 session 對象提取 thename 的值並顯示它,以此證明雖然該值在第一個頁面輸入,但通過 session 對象得以保留。 q3.jsp 的另外一個任務是提取在第二個頁面中的使用者輸入並顯示它:
  < HTML>
  < BODY>
  < %@ page language="java" %>
  < %! String food=""; %>
  < %
  food = request.getParameter("food");
  String name = (String) session.getValue("thename");
  %>
 您的姓名是: < %= name %>
  < P>
 您喜歡吃: < %= food %>
  < /BODY>
  < /HTML>

  三、引用 JavaBean 組件
   JavaBean 是一種基於 Java 的軟體組件。 JSP 對於在 Web 應用程式中整合 JavaBean 組件提供了完善的支援。這種支援不僅能縮短開發時間(可以直接利用經測試和可信任的已有組件,避免了重複開發),也為 JSP 應用帶來了更多的延展性。 JavaBean組件可以用來執行複雜的計算任務,或負責與資料庫的互動以及資料提取等。如果我們有三個 JavaBean ,它們分別具有顯示新聞、股票價格、天氣情況的功能,則建立包含所有這三種功能的 Web 頁面只需要執行個體化這三個 Bean ,使用 HTML 表格將它們依次定位就可以了。
   為說明在 JSP 環境下 JavaBean 的應用,我們建立了一個名為 TaxRate 的 Bean。它有兩個屬性,即 Product (產品)和 Rate (稅率)。兩個 set 方法分別用來設定這兩個屬性,兩個 get 方法則用於提取這兩個屬性。在實際應用中,這種 Bean 一般應當從資料庫提取稅率值,此處我們簡化了這個過程,允許任意設定稅率。下面是這個Bean 的代碼清單:
  package tax;
  public class TaxRate {
  String Product;
  double Rate;
  public TaxRate() {
  this.Product = "A001";
  this.Rate = 5;
  }
  public void setProduct (String ProductName) {
  this.Product = ProductName;
  }
  public String getProduct() {
  return (this.Product);
  }
  public void setRate (double rateValue) {
  this.Rate = rateValue;
  }
  public double getRate () {
  return (this.Rate);
  }
  }
   在 JSP 頁面中應用上述 Bean 要用到 < jsp:useBean> 標記。依賴於具體使用的JSP 引擎的不同,在何處配置以及如何配置 Bean 的方法也可能略有不同。本文將這個Bean 的 .class 檔案放在 c:jswdk-1.0examplesWEB-INFjspeans ax 目錄下,這裡的 tax 是一個專門存放該 Bean 的目錄。下面是一個應用上述 Bean 的樣本頁面:

  < HTML>
  < BODY>
  < %@ page language="java" %>
  < jsp:useBean id="taxbean" scope="application" class="tax.TaxRate" />
  < % taxbean.setProduct("A002");
  taxbean.setRate(17);
  %>
 使用方法 1 : < p>
 產品 : < %= taxbean.getProduct() %> < br>
 稅率 : < %= taxbean.getRate() %>
  < p>
  < % taxbean.setProduct("A003");
  taxbean.setRate(3);
  %>
  < b> 使用方法 2 : < /b> < p>
 產品 : < jsp:getProperty name="taxbean" property="Product" />
  < br>
 稅率 : < jsp:getProperty name="taxbean" property="Rate" />
  < /BODY>
  < /HTML>
   在 < jsp:useBean> 標記內定義了幾個屬性,其中 id 是整個 JSP 頁面內該 Bean 的標識, scope 屬性定義了該 Bean 的存留時間, class 屬性說明了該 Bean 的類檔案(從包名開始)。
   這個 JSP 頁面不僅使用了 Bean 的 set 和 get 方法設定和提取屬性值,還用到了提取 Bean 屬性值的第二種方法,即使用 < jsp:getProperty> 標記。 < jsp:getProperty> 中的 name 屬性即為 < jsp:useBean> 中定義的 Bean 的 id ,它的 property 屬性指定的是目標屬性的名字。
   事實證明, Java Servlet 是一種開發 Web 應用程式的理想構架。 JSP 以 Servlet技術為基礎,又在許多方面作了改進。 JSP 頁面看起來象普通 HTML 頁面,但它允許嵌入執行代碼,在這一點上,它和 ASP 技術非常相似。利用跨平台啟動並執行 JavaBean 組件, JSP 為分離處理邏輯與顯示樣式提供了卓越的解決方案。 JSP 必將成為 ASP 技術的有力競爭者。


相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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