top
Loading...
JavaServerPagesservlet技術(上)
JSP 技術 -- 是友還是敵?
批判性地看待一種可行的表示技術: JavaServerPages servlet 技術

Brett McLaughlin
Lutris Technologies 公司的 enhydra 戰略家
2000 年 10 月


作為一名 Java 技術老手和新的 enhydra 擁護者,作者力勸開發人員在選擇設計 Web 應用程序的途徑時,考慮一下 JavaServerPages (JSP) servlet 以外的其他方法。JSP 技術是 Sun 公司的 J2EE 平臺和編程模型的一部分,是為解決如何把單調的內容變成引人注目的表示層這一難題而提出的解決方案。實際上,Web 開發人員也并非一致對 JSP 技術表示滿意。既然現在有 Sun 技術的多種變體可以使用,所以您可以在許多表示技術之間進行選擇。本文深入探討 JSP 編碼技術,并探究幾個有吸引力的替代方法。


表示技術設計用來將平淡的拉丁文原始 Web 內容轉化為包裝在有吸引力的表示層中的內容。JavaServer Pages (JSP) 技術,作為 Sun 公司的表示模型和 J2EE 平臺的一部分,受到了極大關注。使用 JSP 技術有利有弊,Web 開發人員應知曉這些利弊 -- 懂得他們不必拘泥于這一技術。實際上,近來出現了許多表示技術。本文以表示技術所要解決的問題為開端,然后考察 JSP 模型的特有優勢和弱點。最后,介紹幾個可以代替 Sun 的表示技術的可行方案。


歷史點滴

在深入解釋表示技術之前,介紹一些導致此技術產生的詳細背景資料很有幫助。僅僅在 10 年前,瘦客戶機還是一個很新的術語。那時我們還生活在臺式機應用程序的世界中,使用低級的 286 微處理器,瞇著眼睛看 14 英寸的顯示器。但是現在時代不同了,朋友!現在,我的臺式機除了運行 Web 瀏覽器之外什么也不干。我們使用 Sun、IBM、HP、Compaq 和其他公司的服務器來運行計算、業務邏輯和內容。那個小顯示器呢?它已被又大又漂亮的 21 英寸和 25 英寸等離子體平面顯示器所取代。為什么呢?因為這樣我們就可以觀看錯綜復雜的 HTML 顯示,而這些 HTML 顯示是強大的應用程序的前端。單調沉悶的界面已不能滿足要求;現在,我們希望看到華麗的圖形、移動的圖像、色彩協調的表示,不管哪個房間看上去都那么漂亮,并且能夠快速顯示出來。

前提

十年后的今天,作為雛形的 Windows 應用程序已經成為歷史,我們仍面臨著表示方法上的巨大轉變。悲慘的 Visual Basic 和 C 程序員發現,他們現在只能編寫后端系統或僅用于 Windows 的應用程序,或者已在自己的工具箱中添加了能提供 Web 功能的語言,例如 Java 語言。不支持四分之三以上 ML 語言(如 HTML、XML 和 WML)的應用程序即使不被認為是完全失敗的,也會被認為是很低劣的。當然,這說明我們都很注重很容易地開發 Web 表示層的能力。

結果是,使用新的因特網,以及我們熟悉的所有語言(Java、C、Perl、Pascal、 Ada 以及其他語言)都不像我們所希望的那么容易。當將每個人都使用的編程語言用于后端程序并生成適用于客戶機的標記語言時,會出現一大量的問題。隨著瀏覽器提供更多的選項(例如 DHTML 和 JavaScript 編碼)、Web 領域圖形藝術人才的增加、以及能夠使用標準 HTML 生成復雜界面的工具的出現,對別具一格的用戶界面的需求比我們開發這些應用程序前端的能力增長得還要快。這就導致了表示技術的興起。

表示技術設計用來執行一項任務:將內容(即不帶顯示詳細信息的數據)轉換為表示 -- 即您在電話、掌上電腦或 Web 瀏覽器中看到的各種用戶界面。這些表示技術聲稱能夠解決哪些問題?讓我們來看一下。

隔離與集成

表示技術的最基本目的是使得內容和表示可以分離開來。換言之,業務邏輯單元(可能用 C 或 Java 語言編寫)不必以表示特定的方式生成代碼。數據或者內容以原始形式返回,不帶任何格式。之后,表示技術為這些內容添加格式或表示。結果是,數據被圖形、格式、顏色和徽標環繞包圍起來。

請看清單 1 和清單 2 中的示例,看一下原始內容和結合了表示技術的內容之間的區別。

清單 1 顯示的是原始內容,除了數據外別無他物,可以通過多種方式使用。

清單 1. 只包含數據的原始內容


Russell CroweTom HanksMeg RyanMary Stuart MastersonAlec BaldwinAshley JuddKeanu Reeves

清單 2 就比上一個清單復雜多了,它顯示的是相同的數據,但這些數據包裝在表示技術中,并且隨時可以在支持 HTML 的瀏覽器中顯示。

清單 2. 用表示包裝的數據


<HTML><HEAD> <TITLE>搜索結果:演員</TITLE></HEAD><BODY> <H2 ALIGN="center">搜索結果:演員</H2> <CENTER> <HR WIDTH="85%"> <TABLE WIDTH="50%" CELLPADDING="3" CELLSPACING="3" BORDER="1" BGCOLOR="#FFFFCC"> <TR BGCOLOR="#FFCCCC"> <TH WIDTH="50%" ALIGN="center">姓</TH> <TH WIDTH="50%" ALIGN="center">名</TH> </TR> <TR> <TD WIDTH="50%">Baldwin</TD> <TD WIDTH="50%">Alec</TD> </TR> <TR> <TD WIDTH="50%">Crowe</TD> <TD WIDTH="50%">Russell</TD> </TR> <TR> <TD WIDTH="50%">Hanks</TD> <TD WIDTH="50%">Tom</TD> </TR> <TR> <TD WIDTH="50%">Judd</TD> <TD WIDTH="50%">Ashley</TD> </TR> <TR> <TD WIDTH="50%">Masterson</TD> <TD WIDTH="50%">Mary Stuart</TD> </TR> <TR> <TD WIDTH="50%">Reeves</TD> <TD WIDTH="50%">Keanu</TD> </TR> <TR> <TD WIDTH="50%">Ryan</TD> <TD WIDTH="50%">Meg</TD> </TR> </TABLE> </CENTER></BODY></HTML>

清單 1 中的內容對毫無經驗的外行人來說,易于理解,也便于使用。清單 2 中的內容則專用于在瀏覽器中顯示。從清單 2 中提取數據,或處理它用于其他目的,就需要有一些技巧。

這一基本區別 -- 將表示和內容分開而不是集成在一起的處理(至少在用戶不需要這些信息時是這樣), 是表示技術(包括 JSP 技術)的前提。進一步說,沒有達到這一基本目標的表示技術就沒有真正實現設計的最初目的。


編寫與修改

除了將內容和表示分離開來以外,衡量表示技術是否有用的另外一個因素則是它所免除的修改工作量。表示和內容的分離加大了內容開發人員的角色差別。程序員可將注意力集中在前面示例中的原始內容上,圖形藝術家或網站管理員則可將精力放在表示上。但是,在把藝術家設計的表示或標記取出并加入到程序員編制的內容中時,還會出現一些角色交迭。

在最簡單的情況下,藝術家提供標記,開發人員提供代碼并將標記插入表示技術中。然后,應用程序“啟動”,內容會魔術般地變成一個用戶界面。當然,我們都知道,開發工作通常不會僅止于此。下一步是修訂和更改界面,并編制新的業務規則,這正是檢驗表示技術靈活性的地方。雖然更新輸入到表示層中的原始數據通常并不難,但是圖形藝術家就很難對他們的原始作品進行編輯。對表示層的更改是很常見的(我們都飽受過市場部門改這改那之苦)。所以,現在出現了這樣一個問題:設計人員應該從何處入手來更改他們的工作?是修改他們交給開發人員的原始標記語言頁嗎?可能不是。因為最可能的是,此頁很可能已插入定制標記或代碼(JSP 頁、模板引擎)、轉化為 Java servlet、或者已變得面目全非了。

通常,設計人員必須在原始頁上進行修改,并再次把此頁交給開發人員。開發人員必須把此頁再次轉化為表示技術所使用的特定格式。否則,設計人員就必須學會一種腳本語言,或至少懂得此頁中的哪些源代碼區域是禁止入內的。當然,這是一種容易出錯的、非常危險的方法。一旦您確定下來以一種表示技術支持內容和表示之間的明確分離,您就應確保改變表示所需的修改工作量限定在最小。

北斗有巢氏 有巢氏北斗