@作者博客
Servlet生命周期和工作原理
分為三個階段
初始化階段 調(diào)用init()方法
響應(yīng)客戶請求階段 調(diào)用service()方法
終止階段 調(diào)用destroy()方法 (抵死囧應(yīng))
*記住這一點 : Servlet 加載--->實例化--->服務(wù)--->銷毀。
初始化階段 init()
- 在Servlet的生命周期中,僅執(zhí)行一次init()方法
- 它是在服務(wù)器載入Servlet時執(zhí)行的,負(fù)責(zé)初始化Servlet對象
核心: service()
它是Servlet的核心,負(fù)責(zé)響應(yīng)客戶的請求,每當(dāng)一個客戶請求一個HTTPServlet對象的時候,該對象就會調(diào)用Service()方法.而且傳遞給這個方法一個請求(ServletRequset)對象和一個響應(yīng)(ServletResponse)對象作為初始.默認(rèn)是調(diào)用Http請求響應(yīng)Do功能
默認(rèn)情況下,當(dāng)客戶第一次請求訪問Servlet時,WEB容器就會創(chuàng)建Servlet的實例
當(dāng)web.xml文件中如果<servlet>元素中指定了<load-on-startup>子元素時,Servlet容器在啟動web服務(wù)器時,將按照順序創(chuàng)建并初始化Servlet對象。
Destory()
- 僅執(zhí)行一次,在服務(wù)器停止的時候.
- 當(dāng)Servlet對象退出生命周期時,負(fù)責(zé)釋放占用的資源.
- 當(dāng)WEB應(yīng)用被終止,或Servlet容器終止運行,或Servlet容器重新裝載Servlet新實例時,Servlet容器會先調(diào)用Servlet的destroy()方法,在destroy()方法中可以釋放掉Servlet所占用的資源。
通俗一點說 工作原理
首先客戶發(fā)送一個請求,Servlet是調(diào)用service()方法對請求進(jìn)行響應(yīng)
service()方法中對請求的方式進(jìn)行了匹配,選擇調(diào)用 doGet,doPost等方法,然后再進(jìn)入對應(yīng)的方法,調(diào)用邏輯層的方法,實現(xiàn)對客戶端的響應(yīng).
擴(kuò)展
Servlet與JSP的比較:
都可以生成動態(tài)網(wǎng)頁。
JSP的優(yōu)點是擅長于網(wǎng)頁制作,生成動態(tài)頁面比較直觀,缺點是不容易跟蹤與排錯。
Servlet是Java語言,擅長于處理流程和業(yè)務(wù)邏輯,缺點是生成動態(tài)網(wǎng)頁不直觀。
思維導(dǎo)圖如下:
@作者博客