国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Servlet與CGI的比較

2019-11-08 02:38:21
字體:
來源:轉載
供稿:網友

CGI(Common Gateway Interface),通用網關接口

通用網關接口,簡稱CGI,是一種根據請求信息動態產生回應內容的技術。通過CGI,Web 服務器可以將根據請求不同啟動不同的外部程序,并將請求內容轉發給該程序,在程序執行結束后,將執行結果作為回應返回給客戶端。也就是說,對于每個請求,都要產生一個新的進程進行處理。因為每個進程都會占有很多服務器的資源和時間,這就導致服務器無法同時處理很多的并發請求。另外CGI程序都是與操作系統平臺相關的,雖然在互聯網爆發的初期,CGI為開發互聯網應用做出了很大的貢獻,但是隨著技術的發展,開始逐漸衰落。

Servlet

Servlet最初是在1995年由James Gosling 提出的,因為使用該技術需要復雜的Web服務器支持,所以當時并沒有得到重視,也就放棄了。后來隨著Web應用復雜度的提升,并要求提供更高的并發處理能力,Servlet被重新撿起,并在java平臺上得到實現,現在提起Servlet,指的都是Java Servlet。Java Servlet要求必須運行在Web服務器當中,與Web服務器之間屬于分工和互補關系。確切的說,在實際運行的時候Java Servlet與Web服務器會融為一體,如同一個程序一樣運行在同一個Java虛擬機(JVM)當中。與CGI不同的是,Servlet對每個請求都是單獨啟動一個線程,而不是進程。這種處理方式大幅度地降低了系統里的進程數量,提高了系統的并發處理能力。另外因為Java Servlet是運行在虛擬機之上的,也就解決了跨平臺問題。如果沒有Servlet的出現,也就沒有互聯網的今天。 在Servlet出現之后,隨著使用范圍的擴大,人們發現了它的一個很大的一個弊端。那就是 為了能夠輸出HTML格式內容,需要編寫大量重復代碼,造成不必要的重復勞動。為了解決這個問題,基于Servlet技術產生了JavaServet Pages技術,也就是jsp。Servlet和JSP兩者分工協作,Servlet側重于解決運算和業務邏輯問題,JSP則側重于解決展示問題。 Servlet與JSP一起為Web應用開發帶來了巨大的貢獻,后來出現的眾多Java Web應用開發框架都是基于這兩種技術的,更確切的說,都是基于Servlet技術的。

Servlet 與 CGI 的比較

和CGI程序一樣,Servlet可以響應用戶的指令(提交一個FORM等等),也可以象CGI程序一樣,收集用戶表單的信息并給予動態反饋(簡單的注冊信息錄入和檢查錯誤)。

然而,Servlet的機制并不僅僅是這樣簡單的與用戶表單進行交互。傳統技術中,動態的網頁建立和顯示都是通過CGI來實現的,但是,有了Servlet,您可以大膽的放棄所有CGI(perl?php?甚至asp!),利用Servlet代替CGI,進行程序編寫。對比一:當用戶瀏覽器發出一個Http/CGI的請求,或者說 調用一個CGI程序的時候,服務器端就要新啟用一個進程 (而且是每次都要調用),調用CGI程序越多(特別是訪問量高的時候),就要消耗系統越多的處理時間,只剩下越來越少的系統資源,對于用戶來說,只能是漫長的等待服務器端的返回頁面了,這對于電子商務激烈發展的今天來說,不能不說是一種技術上的遺憾。而Servlet充分發揮了服務器端的資源并高效的利用。每次調用Servlet時并不是新啟用一個進程,而是在一個Web服務器的進程敏感詞享和分離線程,而線程最大的好處在于可以共享一個數據源,使系統資源被有效利用。對比二:傳統的CGI程序,不具備平臺無關性特征,系統環境發生變化,CGI程序就要癱瘓,而Servlet具備Java的平臺無關性,在系統開發過程中保持了系統的可擴展性、高效性。對比三:傳統技術中,一般大都為二層的系統架構,即Web服務器+數據庫服務器,導致網站訪問量大的時候,無法克服CGI程序與數據庫建立連接時速度慢的瓶頸,從而死機、數據庫死鎖現象頻繁發生。而我們的Servlet有連接池的概念,它可以利用多線程的優點,在系統緩存中事先建立好若干與數據庫的連接,到時候若想和數據庫打交道可以隨時跟系統"要"一個連接即可,反應速度可想而知。

Servlet處于服務器進程中,它通過多線程方式運行其service方法,一個實例可以服務于多個請求,并且其實例一般不會銷毀。  而CGI對每個請求都產生新的進程,服務完成后就銷毀,所以效率上低于Servlet 。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 专栏| 和硕县| 丽水市| 铁岭县| 聊城市| 新宁县| 巴彦淖尔市| 临沭县| 阿鲁科尔沁旗| 盘山县| 卓资县| 鸡东县| 三明市| 鄄城县| 冀州市| 河北省| 新乡县| 会昌县| 抚远县| 神池县| 淅川县| 新宾| 吉首市| 新龙县| 红原县| 华阴市| 长汀县| 漳平市| 厦门市| 哈尔滨市| 顺平县| 鲜城| 仪陇县| 云林县| 阳泉市| 鄯善县| 郴州市| 长岭县| 城步| 天长市| 揭西县|