1. 定義:數據庫
CGI(Common Gateway Interface 公共網關接口)是HTTP服務器與你的或其它機器上的程序進行「交談」的一種工具,其程序須運行在網絡服務器上。windows
2. 功能:瀏覽器
絕大多數的CGI程序被用來解釋處理傑自表單的輸入信息,並在服 務器產生相應的處理,或將相應的信息反饋給瀏覽器。CGI程序使 網頁具備交互功能。性能優化
3. 運行環境:服務器
CGI程序在UNIX操做系統上CERN或NCSA格式的服務器上運行。 在其它操做系統(如:windows NT及windows95等)的服務器上 也普遍地使用CGI程序,同時它也適用於各類類型機器。網絡
4. CGI處理步驟:併發
⑴經過Internet把用戶請求送到服務器。工具
⑵服務器接收用戶請求並交給CGI程序處理。性能
⑶CGI程序把處理結果傳送給服務器。優化
⑷服務器把結果送回到用戶。
Servlet是一種服務器端的Java應用程序,具備獨立於平臺和協議的特性,能夠生成動態的Web頁面。 它擔當客戶請求(Web瀏覽器或其餘HTTP客戶程序)與服務器響應(HTTP服務器上的數據庫或應用程序)的中間層。 Servlet是位於Web 服務器內部的服務器端的Java應用程序,與傳統的從命令行啓動的Java應用程序不一樣,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。
工做模式:客戶端發送請求至服務器;服務器啓動並調用Servlet,Servlet根據客戶端請求生成響應內容並將其傳給服務器;服務器將響應返回客戶端。
Java Servlet與CGI (Common Gateway Interface 公共網關接口)的比較:
與傳統的CGI和許多其餘相似CGI的技術相比,Java Servlet具備更高的效率,更容易使用,功能更強大,具備更好的可移植性,更節省投資。在將來的技術發展過程當中,Servlet有可能完全取代CGI。
在傳統的CGI中,每一個請求都要啓動一個新的進程,若是CGI程序自己的執行時間較短,啓動進程所須要的開銷極可能反而超過實際執行時間。而在Servlet中,每一個請求由一個輕量級的Java線程處理(而不是重量級的操做系統進程)。
在傳統CGI中,若是有N個併發的對同一CGI程序的請求,則該CGI程序的代碼在內存中重複裝載了N次;而對於Servlet,處理請求的是N個線程,只須要一份Servlet類代碼。在性能優化方面,Servlet也比CGI有着更多的選擇。
* 方便
Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態等。
* 功能強大
在Servlet中,許多使用傳統CGI程序很難完成的任務均可以輕鬆地完成。例如,Servlet可以直接和Web服務器交互,而普通的CGI程序不能。Servlet還可以在各個程序之間共享數據,使得數據庫鏈接池之類的功能很容易實現。
* 可移植性好
Servlet用Java編寫,Servlet API具備完善的標準。所以,爲IPlanet Enterprise Server寫的Servlet無需任何實質上的改動便可移植到Apache、Microsoft IIS或者WebStar。幾乎全部的主流服務器都直接或經過插件支持Servlet。