CGI與Servlet的區別和聯系


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無需任何實質上的改動即可移植到ApacheMicrosoft IIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM