Tomcat的簡單工作原理
Tomcat是開源的實現了部分Java EE規範的Java Web應用伺服器。除了J2EE,還有其他技術也通過容器來實現,比如:EJB,Java Mail,JPA,JTA,JMS。
值得注意的是,目前經常接觸的java容器,tomcat和jetty只是實現了J2EE的部分規範,比如Servlet和JSP。像XML,JMS,JTA,JTS,JAF,JDBC,JNDI,EJB,RMI,CORBA等其他規範會在Jboss,Glassfish等新興容器中首先實現。所以像Glassfish這種開源的的容器,是研究Java EE最新技術的第一選擇。
下面針對Tomcat支援的Java EE的規範做個簡單的介紹:
Servlet:擴充套件了Web伺服器功能的小型的Java程式。
JSP:在HTML程式碼中嵌入JAVA程式碼,伺服器在接收到客戶端的請求後對JAVA程式碼進行處理,然後將生成的HTML頁面返回給客戶端的瀏覽器。
Servlet容器
從tomcat的配置檔案中可以看出,Servlet容器由Server,Service組成,其中Service又包含了很多的元件。
值得注意的是tomcat中conf路徑中的server.xml體現的Server就是指的Tomcat伺服器,負責管理各個Service,同時監聽shutdown鉤子。
Service就是Tomcat封裝的支援WEB服務的元件,它包含許多的元件,其中有Connector和Container這兩個重要元件,和Loader(類載入器),Realm(許可權管理),JMX(提供遠端監控tomcat的功能),Jasper(JSP解析引擎),Pipeline(請求的管道),Naming(即JNDI命名服務)等元件。
Container元件
Container由Engine(Servlet的主容器),Host(虛擬主機,負責部署web應用和Context的建立),Context(負責配置解析,管理Web資源),Wrapper(也就是每個Servlet的封裝)組成,Engine又由多個Host組成,一個Host包含多個Wrapper。
Servlet的生命週期
- 初始化呼叫init()方法:當請求到達Server,會被對映到相對應的Servlet,如果不存在對應的Servlet例項,則載入和例項化,此時呼叫init()方法
- service()即是主方法,提供請求與返回
- 銷燬方法destory():當Server不再需要Servlet時,Server呼叫Servlet的destory()方法。
JSP規範
JSP引擎的工作流程
- servlet容器編譯servlet原始檔,生成相應的類
- 載入與JSP對應的servlet類,建立例項,並呼叫它的初始化方法,對應_jspInit()
- 執行servlet例項的服務方法,對應_jspService()
- 銷燬servlet例項的銷燬方法,銷燬servlet例項,對應_jspDestory()
相關文章
- 【Tomcat】Tomcat工作原理及簡單模擬實現Tomcat
- Tomcat組成與工作原理Tomcat
- 學習筆記-React的簡單介紹&工作原理筆記React
- 你還記得 Tomcat 的工作原理麼Tomcat
- Jetty 的工作原理以及與 Tomcat 的比較JettyTomcat
- 簡單分析ThreadPoolExecutor回收工作執行緒的原理thread執行緒
- windows tomcat 簡單部署WindowsTomcat
- 簡單易懂的索引原理索引
- 實現一個簡單的TomcatTomcat
- Git簡單原理Git
- RabbitMQ系列(二)深入瞭解RabbitMQ工作原理及簡單使用MQ
- ppium簡介及工作原理
- MapReduce工作原理流程簡介
- HttpSession工作原理簡介HTTPSession
- 簡單的實現vue原理Vue
- 簡單的實現React原理React
- Thanos工作原理及元件簡介元件
- mr原理簡單分析
- jsp簡單原理JS
- Dubbo原理簡單分析
- Laravel 原始碼分析——Eloquent 的工作原理簡析Laravel原始碼
- 簡單聊一聊Vuex的原理Vue
- 簡單、好懂的Svelte實現原理
- java工作常用簡單工具Java
- 簡單實現vuex原理Vue
- tomcat原理Tomcat
- IDC機房工作的簡單流程
- Linux 下 Apache 與 Tomcat 整合的簡單方法LinuxApacheTomcat
- React-redux的原理以及簡單使用ReactRedux
- 來了老弟,最簡單的Promise原理Promise
- butterknife原始碼簡單分析&原理簡述原始碼
- Redux 原理和簡單實現Redux
- MapReduce原理及簡單實現
- promise原理就是這麼簡單Promise
- web到service簡單原理例子Web
- Linux下Apache與Tomcat整合的簡單方法(轉)LinuxApacheTomcat
- 簡單易懂的tinker熱修復原理分析
- 自己簡單實現Spring的IOC原理Spring