Java web視頻:Servlet執(zhí)行原理,在JavaWeb學(xué)習(xí)研究中,Servlet扮演重要的作用,學(xué)好它,是后續(xù)JavaWeb學(xué)習(xí)的良好基礎(chǔ)。無論是SSH,還是SSM,微服務(wù)JavaWeb技術(shù),都應(yīng)先學(xué)好Servlet,從而達到事半功倍的效果,本篇將主要分析Servlet的運行原理。
下圖為ServletUML關(guān)系圖。
從圖中,可以看出:
1.抽象類HttpServlet繼承抽象類GenericServlet,其有兩個比較關(guān)鍵的方法,doGet()和doPost()
2.GenericServlet實現(xiàn)接口Servlet,ServletConfig,Serializable
3.MyServlet(用戶自定義Servlet類)繼承HttpServlet,重寫抽象類HttpServlet的doGet()和doPost()方法
注:任何一個用戶自定義Servlet,只需重寫抽象類HttpServlet的doPost()和doGet()即可,如上圖的MyServlet
二Servlet在容器中的執(zhí)行過程
Servlet只有放在容器中,方可執(zhí)行,且Servlet容器種類較多,如Tomcat,WebLogic等。下圖為簡單的請求響應(yīng)模型。
分析:
1.瀏覽器向服務(wù)器發(fā)出GET請求(請求服務(wù)器ServletA)
2.服務(wù)器上的容器邏輯接收到該url,根據(jù)該url判斷為Servlet請求,此時容器邏輯將產(chǎn)生兩個對象:請求對象(HttpServletRequest)和響應(yīng)對象(HttpServletResponce)
3.容器邏輯根據(jù)url找到目標(biāo)Servlet(本示例目標(biāo)Servlet為ServletA),且創(chuàng)建一個線程A
4.容器邏輯將剛才創(chuàng)建的請求對象和響應(yīng)對象傳遞給線程A
5.容器邏輯調(diào)用Servlet的service()方法
6.service()方法根據(jù)請求類型(本示例為GET請求)調(diào)用doGet()(本示例調(diào)用doGet())或doPost()方法
7.doGet()執(zhí)行完后,將結(jié)果返回給容器邏輯
8.線程A被銷毀或被放在線程池中
注意:
1.在容器中的每個Servlet原則上只有一個實例
2.每個請求對應(yīng)一個線程
3.多個線程可作用于同一個Servlet(這是造成Servlet線程不安全的根本原因)
4.每個線程一旦執(zhí)行完任務(wù),就被銷毀或放在線程池中等待回收
三Servlet在JavaWeb中扮演的角色
Servlet在JavaWeb中,扮演兩個角色:頁面角色和控制器角色。
有了jsp等動態(tài)頁面技術(shù)后,Servlet更側(cè)重于控制器角色,jsp+servlert+model形成基本的三層架構(gòu)
(一)頁面Page角色
(二)控制器角色
jsp充當(dāng)頁面角色,Servlet扮演控制器角色,兩者組合構(gòu)建基本的MVC三層架構(gòu)模式
四Servlet在容器中的生命周期
下圖為Servlet生命周期簡要概圖
以上就是北大青鳥長沙麓谷校區(qū)java培訓(xùn)機構(gòu)的小編針對“Java web視頻:Servlet執(zhí)行原理”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
Javaweb相關(guān)基礎(chǔ)學(xué)習(xí)
Servlet視頻教程:http://www.bjpowernode.com/javavideo/119.html
Java視頻