Tomcat的簡單工作原理

Tomcat是開源的實(shí)現(xiàn)了部分Java EE規(guī)范的Java Web應(yīng)用服務(wù)器。除了J2EE,還有其他技術(shù)也通過容器來實(shí)現(xiàn),比如:EJB,Java Mail,JPA,JTA,JMS。

值得注意的是,目前經(jīng)常接觸的java容器,tomcat和jetty只是實(shí)現(xiàn)了J2EE的部分規(guī)范,比如Servlet和JSP。像XML,JMS,JTA,JTS,JAF,JDBC,JNDI,EJB,RMI,CORBA等其他規(guī)范會在Jboss,Glassfish等新興容器中首先實(shí)現(xiàn)。所以像Glassfish這種開源的的容器,是研究Java EE最新技術(shù)的第一選擇。

下面針對Tomcat支持的Java EE的規(guī)范做個簡單的介紹:
Servlet:擴(kuò)展了Web服務(wù)器功能的小型的Java程序。
JSP:在HTML代碼中嵌入JAVA代碼,服務(wù)器在接收到客戶端的請求后對JAVA代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。

Servlet容器

從tomcat的配置文件中可以看出,Servlet容器由Server,Service組成,其中Service又包含了很多的組件。

值得注意的是tomcat中conf路徑中的server.xml體現(xiàn)的Server就是指的Tomcat服務(wù)器,負(fù)責(zé)管理各個Service,同時監(jiān)聽shutdown鉤子。

Service就是Tomcat封裝的支持WEB服務(wù)的組件,它包含許多的組件,其中有Connector和Container這兩個重要組件,和Loader(類加載器),Realm(權(quán)限管理),JMX(提供遠(yuǎn)程監(jiān)控tomcat的功能),Jasper(JSP解析引擎),Pipeline(請求的管道),Naming(即JNDI命名服務(wù))等組件。

Container組件
Container由Engine(Servlet的主容器),Host(虛擬主機(jī),負(fù)責(zé)部署web應(yīng)用和Context的創(chuàng)建),Context(負(fù)責(zé)配置解析,管理Web資源),Wrapper(也就是每個Servlet的封裝)組成,Engine又由多個Host組成,一個Host包含多個Wrapper。

Servlet的生命周期

  • 初始化調(diào)用init()方法:當(dāng)請求到達(dá)Server,會被映射到相對應(yīng)的Servlet,如果不存在對應(yīng)的Servlet實(shí)例,則加載和實(shí)例化,此時調(diào)用init()方法
  • service()即是主方法,提供請求與返回
  • 銷毀方法destory():當(dāng)Server不再需要Servlet時,Server調(diào)用Servlet的destory()方法。

JSP規(guī)范

JSP引擎的工作流程

  • servlet容器編譯servlet源文件,生成相應(yīng)的類
  • 加載與JSP對應(yīng)的servlet類,創(chuàng)建實(shí)例,并調(diào)用它的初始化方法,對應(yīng)_jspInit()
  • 執(zhí)行servlet實(shí)例的服務(wù)方法,對應(yīng)_jspService()
  • 銷毀servlet實(shí)例的銷毀方法,銷毀servlet實(shí)例,對應(yīng)_jspDestory()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自陳明乾的博客,可能有一定更新。 轉(zhuǎn)原文聲明:原創(chuàng)作品,允許轉(zhuǎn)載,轉(zhuǎn)載時請務(wù)必以超鏈接形式標(biāo)明文章 原始出處 、...
    C86guli閱讀 4,885評論 6 72
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,806評論 18 399
  • 0 系列目錄# WEB請求處理 WEB請求處理一:瀏覽器請求發(fā)起處理 WEB請求處理二:Nginx請求反向代理 本...
    七寸知架構(gòu)閱讀 14,248評論 22 189
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,849評論 11 349
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,031評論 0 11

友情鏈接更多精彩內(nèi)容