1. 定義:
CGI(Common Gateway Interface 公共網關接口)是HTTP服務器與你的或其它機器上的程序進行“交談”的一種工具,其程序須運行在網絡服務器上。
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。