物件導向程式設計

 

 

第十章、JSP/Servlet開發

 

 


授課教師:陳慶瀚

WWW : http://www.miat.ee.isu.edu.tw/java

E-mail : pierre@isu.edu.tw   

 


1. JSP簡介

JSP(Java Server Pages)是由Sun Microsystem公司於1999/6推出的新技術,是基於Java Servlet以及整個java體系的Web開發技術,是Servlet2.1 API的擴展。利用這一技術可以建立先進、安全和跨平台的動態網站。這個技術還在不斷的更新和優化, 有關JAVA和JSP的進一步資訊可存取以下網址: http://www.javasoft.com/

JSP的結構與ASP非常相似。不過ASP一般只應用於Windows NT/2000平台,而JSP則可以不加修改地在85%以上的Web Server上執行,其中包括了NT的系統,符合"write once,run anywhere"的java標準。

J2EE(Java2 platform Enterprise Edition)是Sun為企業級應用建立的高水準的結構,獲得了各大開發平台提供商的積極支援,並已成為企業應用開發的主流產品。JSP技術在J2EE平台上是一個關鍵性的元件。

因此可以說JSP已經並不僅僅是一種新的web技術了。總括來講,JavaSever Pages(JSP)和 微軟的Active Sever Pages(ASP)在技術方面有許多相似之處。兩者都是為基於WEB應用實現動態互動網頁製作提供的技術環境支援。同等程度上來講,兩者都能夠為程式開發人員提供實現應用程式的編制,網頁從邏輯上分離的技術。而且兩者都能夠替代CGI使網站建設與發展變的較為簡單與快捷。

儘管JavaSever Pages 技術和微軟的Active Sever Pages在許多方面都有相似的,但仍然存在很多不同之處,其中最本質上的區別在於:兩者是來源於不同的技術規範群組織,其實現的基礎:WEB伺服器平台要求不相同。

一、 JSP 技術:開放的技術

JSP和ASP技術明顯的不同點:開發人員在對兩者各自軟體體系設計的深入了解的方式不同。JSP技術基於平台和伺服器的互相獨立,支援來自不同的伺服器元件。相比之下,ASP技術主要依賴微軟的技術支援。

1、 平台和伺服器的獨立性

JSP技術依附於一次寫入,之後,可以執行在任何具有符合JavaTM語法結構的環境。取而代之過去依附於單一平台或開發商,JSP技術能夠執行在任何WEB伺服器上並且支援來自多家開發商提供的各種各樣工具包。

由於ASP是基於Activex控件技術提供用戶端和伺服器端的開發元件,因此ASP技術基本上是局限於微軟的作業系統平台之上。ASP主要工作環境是微軟的IIS應用程式結構,又因Activex物件具有平台特性,所以ASP技術不能很容易地實現在跨平台的WEB伺服器的工作。儘管ASP技術通過第三方提供的產品能夠得到元件和服務實現跨平台的應用程式,但是Activex物件必須事先放置於所選擇的平台中。

2、 開放的開發過程,開放的原代碼

SUN應用JAVA社團性過程開發JSP技術。自從1995年,SUN已經用這種開放過程方法同國際JAVA群組織合作開發和修改了JAVA技術與規範。針對JSP的產品,SUN授權了工具提供商(如Macromedia),結盟公司(如Apache, Netscape),最終用戶,協作商及其他。最近,SUN將最新版本的JSP和JavaTM Servlet(JSP 1.1,JAVA SERVLET 2.2)的原代碼發放給Apache,以求JSP與Apache緊密的相互發展。Apache,SUN和許多其他的公司及個人公開成立一個健壯的咨詢機構以便任何公司和個人都能免費取得資訊。(詳見:http://jakarta.apache.org)而由於APACHE對源代碼採用了OPEN TO PUBLIC的技術戰略, 如果你對研究JSP平台的系統源代碼感興趣, 你甚至可以在INTERNET上下載它們,其網址為:http://jakarta.apache.org/downloads/sourceindex.html

JSP應用程式介面(API)毫無疑問已經取得成功,並將隨JAVA組織不斷擴大且完善。相反,ASP技術僅依靠微軟本身的推動,其發展是建立在獨佔的,封閉的開發過程基礎之上。

3、從開發人員的角度來看:ASP和JSP技術都能讓開發者,利用網頁中的元件製作互動、動態的內容和web應用程式。ASP僅支援元件物件模型COM,而JSP技術提供的元件都是基於Javabeans技術或JSP標籤庫。由此可以看出兩者雖有相同之處,但其區別是很明顯的。

1) JSP標籤可擴充性

儘管ASP和JSP都使用標籤與腳本技術來製作動態WEB網頁,JSP技術能夠使開發者擴展JSP標籤得以應用,JSP開發者能定制標籤庫,所以網頁製作者充分利用與XML相容的標籤技術強大的功能,大大減少對腳本語言的依賴。由於定制標籤技術,使網頁製作者降低了製作網頁和擴充網頁功能的複雜程度。

2) JSP跨平台的可重用性

JSP的開發人員在開發過程中一直關注可重用性。JSP元件(Enterprise Javabeans,Javabeans,或定制的JSP標籤)都是跨平台可重用的。Enterprise JavaBeans元件可以存取傳統的資料庫,並能以分散式系統模式工作於UNIX和WINDOWS平台。

這種基於元件的模式很有效提高應用程式的開發效率,因為這種模式能夠使開發人員利用快捷的子元件快速建立模板應用程式,然後再整合一些附加功能以後便可使用。像這樣有效的方法在JSP中無處不在,並可將其包成一個Javabean或一個工業標準化的Javabean元件。

二、 JAVA的優越性

JSP技術是用JAVA語言作為腳本語言的,而ASP網頁使用微軟的VBScrip或Jscrip。JAVA是成熟的,強大的,易擴充的程式設計語言,遠優於基於BASIC的腳本語言。如:JAVA的可執行性優於VBScript或Jscript語言。因為它們利用JAVA技術並且都被編譯為JAVA Servlets。


JAVA使開發人員的工作在其他方面也變的一樣容易,簡單。例如,當ASP應用程式在WINDOWS NT系統被懷疑可能會崩潰時,JAVA能有效的防止系統的崩潰。JAVA語言通過提供防止記憶體的洩漏的方法,在記憶體管理方面也能大顯身手,並且,JSP為應用提供了意外事件處理機制。

1、 易於維護性
基於JSP技術的應用程式比基於ASP的應用程式易於維護和管理。JSP突出的元件技術使修改內容而不影響邏輯或修改邏輯而不影響內容變得很容易實現。企業級的Javabeans結構整合了企業邏輯,例如資料庫的存取,安全,事務完整性,及獨立性即獨立於應用程式。因為JSP技術是一種開放的,跨平台的結構,因此,WEB伺服器,平台,及其他的元件能很容易升級或切換,且不會影響JSP基本的應用程式。這一特點使JSP能夠適用現實世界的各種WEB應用程式不斷的變化和發展。

2、企業產品的多樣性
JAVA2平台即企業版(J2EE)是適用於多企業應用程式的JAVA結構,作為J2EE的部分,JSP網頁可存取所有J2EE的元件,包括Javabeans,企業級Javabeans及JAVA Servlets。JSP網頁都能完全編譯成為Servlets,所以它們都享有靈活性的特點和為伺服器端JAVA應用程式。J2EE平台內容不僅包括管理複雜的企業應用程式而且包括事務管理技術和Pooling資源管理技術。


JSP網頁可以存取標準的J2EE服務,包括:
  * JAVA標簽和目錄介面API
  * JDBC API(與關聯的資料庫通訊)
  * JavaMail(支援基於JAVA郵件和訊息應用程式的類)
  * JAVA 訊息服務

透過J2EE,JSP網頁能夠用許多方式同企業系統互動存取。J2EE支援兩種CORBA規範的技術:JAVA IDL和RMI-IIOP。在企業級JAVABEANS技術支援下,JSP網頁通過運用進階的,物件映射的方式存取資料庫。
最終,因為JSP技術是基於JAVA的開放性過程的產品,因此它能夠廣泛支援不同供應商所提供的工具,這樣能夠使用戶選擇最佳的開發方法,選擇最適合他們的應用程式開發工具,同時,有效地保護用戶在代碼和人員培訓上的投資。

感謝大家對上一篇文章的關注,從本篇開始我將竭盡所能地介紹JSP開發的技術細節。希望有更多有志於電子商務建設和高性能網站建設的朋友們從中受益。   

JSP系統性能

一)根據國內權威的測試(詳見"水木清華"BBS上發佈的"CGI, mod_perl, PHP, JSP性能實測比較"一文),在Netscape Enterprise Server 4.0 for Linux上做了靜態連接和JSP的對比測試:

1) 在大負荷的情況下(共發送5000個請求,每秒發送為500個請求),比較Requests per second:
  靜態連接為:348.31
  JSP為:253.32
  對比在重負荷情況下靜態HTML和JSP的差距348.31/253.32=1.37:1

  2)在小負荷的情況下(共發送5000個請求,每秒發送為50個請求),比較Requests per second:
  靜態連接為:823.18
  JSP為:361.93
  對比在小負荷情況下靜態HTML和JSP的差距823.18/361.93=2.27:1

  測試結果表明:JAVA Servlet在重負荷下的有優勢,負荷越重,JSP性能越接近靜態連接。

二)國際上的JSP廠家RESIN也提供了測試報告,將JSP與PHP和Perl做了比較測試。見(http://www.caucho.com/articles/benchmark.xtp )。


 

物件導向程式設計

義守大學電機系 陳慶瀚

2002.1.9