使用 JavaBean 和 JSP 參數在 Web 頁面之間傳遞資料
簡介:Web 架構設計師 Brett McLaughlin 示範了 JavaBean 組件和 JSP 技術的結合如何使您能夠在 Web 頁面之間儲存並傳遞資料,以及這樣做如何能實現更為動態網站設計。
到目前為止,我們在 JSP 最佳實務系列文章 中著重討論的都是較為基本的主題。在前兩篇文章中, 您學習了如何使用 JSP include 機制來將外部內容引入到您的網站或 Web 應用程式。我們使用了兩種不 同的 include 偽指令:靜態 include 命令和動態 jsp:include 標記。
迄今為止,還無需建立父頁面(在我們的樣本中是一個網站首頁面)和所包含內容之間的任何類型的 通訊。但是這種方案過於簡單。當要對實際 Web 網站或 Web 應用程式介面進行編程時,您通常需要一種 通訊機制在父頁面和所包含檔案之間傳遞資料。例如,您的網站可能有一個標題或訊息是源自首頁面的, 並需要將它提供給頁面頭或頁面尾。在這篇文章中,您將學習如何在頁面之間傳遞資料,以及如何在所包 含的頁面中使用該資料。
註:本系列文章中的所有最佳實務都基於 JavaServer Pages 技術。要運行其中任何一個實踐樣本, 需要在本地機器或測試伺服器上安裝符合 JSP 技術的 Web 容器。您還需要使用文字編輯器或 IDE 來對 JSP 頁面進行編碼。
用於儲存資料的 JavaBean 組件
讓我們研究一下這樣一個網站:其中的每個頁面都有簡短的“標語”(比如“Books: A shelf full of learning”或“CDs: Music worth listening to”)和標題。父頁面(有時叫做 首頁面)確定了每 個頁面的標語,而頁面頭(包含的頁面)要處理 HTML 以輸出該標語。為使該方案工作,首頁面必須能夠 將標語傳遞到頁面頭,而且頁面頭必須能夠接受網頁標題並按請求顯示它。
首先我們需要某種用於儲存被傳遞資料的對象。碰巧的是(並非偶然)JavaBean 組件既適合該目的又 與 JSP 技術非常匹配。bean 只需要用取值方法(accessor)和賦值方法(mutator)來處理資料。您可 能從其它 Java 編程經曆中得知, get() 是個取值方法,因為它訪問資料,而 set() 是個賦值方法,因 為它修改資料。
清單 1 顯示了我們所需的那種 bean 的代碼。 PageHeaderInfo bean 包含了有關網站頁面頭的資訊 。
清單 1. PageHeaderInfo JavaBean
package com.newInstance.site.beans;
import java.io.Serializable;
public class PageHeaderInfo implements Serializable {
/** The title of the page */
private String pageTitle;
/** The slogan of the page */
private String pageSlogan;
public String getPageTitle() {
return pageTitle;
}
public void setPageTitle(String pageTitle) {
this.pageTitle = pageTitle;
}
public String getPageSlogan() {
return pageSlogan;
}
public void setPageSlogan(String pageSlogan) {
this.pageSlogan = pageSlogan;
}
}