1. 程式人生 > >Servlet與CGI的區別

Servlet與CGI的區別

概括來講,Servlet可以完成和CGI相同的功能。 

  CGI應用開發比較困難,因為它要求程式設計師有處理引數傳遞的知識,這不是一種通用的技能。CGI不可移植,為某一特定平臺編寫的CGI應用只能運行於這一環境中。每一個CGI應用存在於一個由客戶端請求啟用的程序中,並且在請求被服務後被解除安裝。這種模式將引起很高的記憶體、CPU開銷,而且在同一程序中不能服務多個客戶。 

  Servlet提供了Java應用程式的所有優勢:可移植、穩健、易開發。使用Servlet Tag技術,Servlet能夠生成嵌於靜態HTML頁面中的動態內容。 

  Servlet對CGI的最主要優勢在於一個Servlet被客戶端傳送的第一個請求啟用,然後它將繼續運行於後臺,等待以後的請求。每個請求將生成一個新的執行緒,而不是一個完整的程序。多個客戶能夠在同一個程序中同時得到服務。一般來說,Servlet程序只是在Web Server解除安裝時被解除安裝。

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。

【轉載】https://blog.csdn.net/kobejayandy/article/details/11906125