js|動態|進階
動態網站開發技術
早期的動態網站開發技術使用的是CGI-BIN介面。開發人員編寫與介面相關的單獨的程式和基於Web的應用程式,後者通過Web伺服器來調用前者。這種開發技術存在著嚴重的擴充性問題——每一個新的CGI程式要求在伺服器上新增一個進程。如果多個使用者並發地訪問該程式,這些進程將耗盡該Web伺服器所有的可用資源,直至其崩潰。
為克服這一弊端,微軟公司提出了Active Server Pages(ASP)技術,該技術利用“外掛程式”和API簡化了Web應用程式的開發。ASP與CGI相比,其優點是可以包含HTML標籤,可以直接存取資料庫及使用無限擴充的ActiveX控制項,因此在程式編製上更富有靈活性。但該技術基本上是局限於微軟的作業系統平台之上,主要工作環境是微軟的IIS應用程式結構,所以ASP技術不能很容易地實現跨平台的Web伺服器程式開發。
Hypertext Preprocessor(超文本前置處理器),即PHP動態網站開發技術與ASP相似,也是一種嵌入HTML文檔的伺服器端指令碼語言。其文法大部分與C、Java、Perl等語言相似,並形成了自己的專屬風格,利用該語言Web程式員可以快速地開發出動態網頁。PHP在大多數Unix平台、GUN/Linux和微軟Windows平台上均可以運行。PHP的優點主要有:安裝方便,學習過程簡單;資料庫連接方便,相容性強;擴充性強;可以進行物件導向編程等。但PHP也存在一些弱點,主要是PHP是一種解釋型語言,不支援多線程結構,支援平台和串連的資料庫都有限,特別是在支援的標準方面存在先天不足,對於某些電子商務應用來說,PHP是不適合的。
還有一些技術,如Java Servlets技術,利用該技術可以很容易地用Java語言編寫互動伺服器端代碼。一個Java Servlets就是一個基於Java技術的運行在伺服器端的程式(與Applet不同,後者運行在瀏覽器端)。開發人員編寫這樣的Java Servlets,以接收來自Web瀏覽器的HTTP請求,動態地產生響應(可能需要查詢資料庫來完成這種請求),然後發送包含HTML或XML文檔的響應到瀏覽器。這種技術對於普通的頁面設計者來說要輕易地掌握是很困難的。採用這種方法,整個網頁必須都在Java Servlets中製作。如果開發人員或者Web管理員想要調整頁面顯示,就不得不編輯並重新編譯該Java Servlets。
太陽微系統公司(Sun Microsystems Inc.)在Web伺服器、應用伺服器、交易系統以及開發工具供應商間廣泛支援與合作下,整合并平衡了已經存在的對Java編程環境(例如Java Servlets和JavaBeans)進行支援的技術和工具後產生了一種新的、開發基於Web應用程式的方法——JavaServer Pages技術(JSP)。這種動態網站開發技術主要有以下一些特點:
能夠在任何Web或應用程式伺服器上運行;
分離了應用程式的邏輯和頁面顯示;
能夠進行快速的開發與測試;
簡化了開發基於Web的互動式應用程式的過程。
JSP的技術方法
為了快速方便地進行動態網站的開發,JSP在以下幾個方面做了改進,使其成為快速建立跨平台的動態網站的首選方案。
1.將內容的產生和顯示進行分離
用JSP技術,Web頁面開發人員可以使用HTML或者XML標識來設計和格式化最終頁面,並使用JSP標識或者小指令碼來產生頁面上的動態內容(內容是根據請求變化的,例如請求賬戶資訊或者特定的一瓶酒的價格等)。產生內容的邏輯被封裝在標識和JavaBeans組件中,並且捆綁在指令碼中,所有的指令碼在伺服器端運行。由於核心邏輯被封裝在標識和JavaBeans中,所以Web管理員和頁面設計者,能夠編輯和使用JSP頁面,而不影響內容的產生。
在伺服器端,JSP引擎解釋JSP標識和指令碼,產生所請求的內容(例如,通過訪問JavaBeans組件,使用JDBC技術訪問資料庫或者包含檔案),並且將結果以HTML(或者XML)頁面的形式發送回瀏覽器。這既有助於作者保護自己的代碼,又能保證任何基於HTML的Web瀏覽器的完全可用性。
2.可重用組件
絕大多數JSP頁面依賴於可重用的、跨平台的組件(JavaBeans或者Enterprise JavaBeans組件)來執行應用程式所要求的複雜的處理。開發人員能夠共用和交換執行普通操作的組件,或者使得這些組件為更多的使用者和客戶團體所使用。基於組件的方法加速了總體開發過程,並且使得各種組織在他們現有的技能和最佳化結果的開發努力中得到平衡。
3.採用標識
Web頁面開發人員不會都是熟悉指令碼語言的編程人員。JSP技術封裝了許多功能,這些功能是在易用的、與JSP相關的XML標識中進行動態內容產生所需要的。標準的JSP標識能夠訪問和執行個體化JavaBeans組件,設定或者檢索組件屬性,下載Applet,以及執行用其他方法更難於編碼和耗時的功能。
4.適應平台
幾乎所有平台都支援Java,JSP+JavaBeans幾乎可以在所有平台下通行無阻。從一個平台移植到另外一個平台,JSP和JavaBeans甚至不用重新編譯,因為Java位元組碼都是標準的與平台無關的。
5.資料庫連接
Java中串連資料庫的技術是JDBC,Java程式通過JDBC驅動程式與資料庫相連,執行查詢、提取資料等操作。Sun公司還開發了JDBC-ODBC bridge,利用此技術Java程式可以訪問帶有ODBC驅動程式的資料庫,目前大多數資料庫系統都帶有ODBC驅動程式,所以Java程式能訪問諸如Oracle、Sybase、MS SQL Server和MS Access等資料庫。
此外,通過開發標識庫,JSP技術可以進一步擴充。第三方開發人員和其他人員可以為常用功能建立自己的標識庫。這使得Web頁面開發人員能夠使用熟悉的工具和如同標識一樣的執行特定功能的構件來進行工作。
JSP技術很容易整合到多種應用體繫結構中,以利用現存的工具和技巧,並且能擴充到支援企業級的分布式應用中。作為採用Java技術家族的一部分,以及Java 2(企業版體繫結構)的一個組成部分,JSP技術能夠支援高度複雜的基於Web的應用。
由於JSP頁面的內建指令碼語言是基於Java的,而且所有的JSP頁面都被編譯成為Java Servlets,所以JSP頁面具有Java技術的所有好處,包括健壯的儲存管理和安全性。作為Java平台的一部分,JSP擁有Java程式設計語言“一次編寫,各處運行”的特點。
JSP的應用程式模型
利用JSP技術,動態資訊由JSP頁面來表現,JSP頁面由安裝在Web伺服器或者使用JSP的應用伺服器上的JSP引擎執行。JSP引擎接受用戶端對JSP頁面的請求,並且產生JSP頁面作為對用戶端的響應。
JSP頁面通常被編譯成為Java Servlets,這是一個標準的Java擴充。頁面開發人員能夠訪問全部的Java應用環境,以利用Java技術的擴充性和可移植性。當JSP頁面第一次被調用時,如果它還不存在,就會被編譯成為一個Java Servlets類,並且儲存在伺服器的記憶體中。這就使得在接下來的對該頁面的調用中,伺服器會有非常快的響應(這避免了CGI-BIN為每個HTTP請求產生一個新的進程的問題)。
JSP頁面可以包含在多種不同的應用體繫結構或者模型中,可以用於由不同協議、組件和格式所組成的聯合體中。基於JSP的動態資訊發布技術是一個開放的、可擴充的建立動態Web頁面的標準。不論採用什麼建立工具,開發人員都可以使用JSP頁面來建立可移植的Web應用,在不同的Web應用伺服器上運行。