隨著Web技術的發展和電子商務時代的到來,人們不再滿足於建立各種靜態地發布信息的網站,更多的時候需要能與用戶進行交互,並能提供後台數據庫的管理和控制等服務的動態網站。
動態網站開發技術
早期的動態網站開發技術使用的是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應用服務器上運行。