servlet與cgi的對比
下面有關servlet和cgi的描述,說法錯誤的是?
-
servlet處於伺服器程序中,它通過多執行緒方式執行其service方法
-
CGI對每個請求都產生新的程序,服務完成後就銷燬
-
servlet在易用性上強於cgi,它提供了大量的實用工具例程,例如自動地解析和解碼HTML表單資料、讀取和設定HTTP頭、處理Cookie、跟蹤會話狀態等
-
cgi在移植性上高於servlet,幾乎所有的主流伺服器都直接或通過外掛支援cgi
Servlet 與 CGI 的比較
和CGI程式一樣,Servlet可以響應使用者的指令(提交一個FORM等等),也可以象CGI程式一樣,收集使用者表單的資訊並給予動態反饋(簡單的註冊資訊錄入和檢查錯誤)。
然而,Servlet的機制並不僅僅是這樣簡單的與使用者表單進行互動。傳統技術中,動態的網頁建立和顯示都是通過CGI來實現的,但是,有了Servlet,您可以大膽的放棄所有CGI(perl?php?甚至asp!),利用Servlet代替CGI,進行程式編寫。
對比一:當用戶瀏覽器發出一個Http/CGI的請求,或者說
呼叫一個CGI程式的時候,伺服器端就要新啟用一個程序
而Servlet充分發揮了伺服器端的資源並高效的利用。每次呼叫Servlet時並不是新啟用一個程序
,而是在一個Web伺服器的程序敏感詞享和分離執行緒,而執行緒最大的好處在於可以共享一個數據源,使系統資源被有效利用。
對比二:傳統的CGI程式,不具備平臺無關性特徵,系統環境發生變化,CGI程式就要癱瘓,而Servlet具備Java的平臺無關性,在系統開發過程中保持了系統的可擴充套件性、高效性。
對比三:傳統技術中,一般大都為二層的系統架構,即Web伺服器+資料庫伺服器,導致網站訪問量大的時候,無法克服CGI程式與資料庫建立連線時速度慢的瓶頸,從而宕機、資料庫死鎖現象頻繁發生。而我們的Servlet有連線池的概念,它可以利用多執行緒的優點,在系統快取中事先建立好若干與資料庫的連線,到時候若想和資料庫打交道可以隨時跟系統"要"一個連線即可,反應速度可想而知。