servlet與cgi的區別與關係(2)--servlet與tomcat

當初在Apache開發時還未出現Servlet的概念,所以Apache不能內置支持Servlet。實際上,除了Apache,其他許多Web服務器軟件都不能直接支持Servlet。爲了支持Servlet,通常要單獨開發程序,這種程序一般稱爲服務器小程序容器(Servlet Container),有時也叫做服務器小程序引擎(Servlet Engine)。它是Web服務器或應用程序服務器的一部分,用於在發送的請求和響應之上提供網絡服務,解碼基於MIME的請求,格式化基於MIME的響應,它在Servlet的生命週期內包容和管理Servlet,是一個實時運行的外殼程序。運行時由Web服務器軟件處理一般請求,並把Servlet調用傳遞給“容器”來處理。Tomcat就是滿足這種需要的JSP/Servlet引擎,是Sun公司的JSP/Servlet的官方實現。
按照工作模式的不同,Servlet容器可以分爲以下3類:
1.獨立運行的Servlet容器
在這種模式下,Servlet容器作爲構成Web服務器的一部分而存在。當使用基於Java的Web服務器時,就屬於這種情況。這種方式是Tomcat的默認模式,然而大多數Web服務器並不是基於Java的,所以就產生了下面的兩種其他類型。
2.內置的Servlet容器
Servlet容器由Web服務器插件和Java容器兩部分組成。採用這種方式時,Web服務器插件需要在某個Web服務器內部地址空間中打開一個JVM(Java虛擬機),在此JVM上加載Java容器並運行Servlet。如果客戶端調用Servlet,Web服務器插件首先獲得此請求的控制並將它傳遞(使用JNI技術)給Java容器,然後Java容器把此請求交給Servlet來處理。這種方式運行速度較快,並且能夠提供良好的性能,適用於單進程、多線程服務器,但是在伸縮性方面存在不足。
3.外置的Servlet容器
採用這種方式時,Servlet容器運行在Web服務器外部地址空間。先由Web服務器插件在某個Web服務器外部地址空間打開一個JVM(Java虛擬機),然後加載Java容器來運行Servlet。Web服務器插件和JVM之間使用IPC(進程間通信)機制(通常是TCP/IPSockets)。如果客戶端調用Servlet,Web服務器插件首先獲得此請求的控制並將它傳遞(使用IPCs技術)給Java容器,然後Java容器把此請求交給Servlet來處理。這種方式對客戶端請求的處理速度不如內置Servlet那樣快,但是在其他方面(如可伸縮性、穩定性等)具有優勢。
Tomcat屬於Servlet容器,其工作模式也分爲上述3種,所以Tomcat既可被用作獨立運行的Servlet引擎(便於開發和調試),又可作爲一個需要增強功能的Web服務器(如當前的Apache、IIS和Netscape服務器)插件。在配置Tomcat之前,就需要確定採用哪種工作模式,工作模式(1)比較簡單,直接安裝Tomcat即可,工作模式(2)和(3)有些複雜,除了安裝Tomcat、Web服務器之外,還需要安裝連接兩者的中間連接件。

Java Servlet API是Servlet容器和Servlet之間的接口,它定義了Servlet的各種方法,還定義了Servlet容器傳送給Servlet的對象類,其中最重要的是請求對象ServletRequest和響應對象ServletResponse。這兩個對象都是由Servlet容器在客戶端調用Servlet時產生的,Servlet容器把客戶請求信息封裝在ServletRequest對象中,然後把這兩個對象都傳送給要調用的Servlet,Servlet處理完後把響應結果寫入ServletResponse,然後由Servlet容器把響應結果發送到客戶端。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章