Servlet執(zhí)行流程
? ? ? ?在講Servlet的生命周期之前,先講解一個例子枕荞。以get方式請求為例柜候,講一講Servlet的執(zhí)行流程,前面講過以超鏈接的方式提交躏精,是get請求的一種渣刷。下面是大致流程。
1.Get方式請求矗烛,LoginServlet ——><a href="com/servlet/login"></a>當(dāng)用戶點(diǎn)擊這個超鏈接提交給服務(wù)器后辅柴,服務(wù)器就會在web.xml配置文件中尋找與之相對應(yīng)的Servlet URL地址。
2.服務(wù)器就會在web.xml配置文件中的標(biāo)簽中去尋找和這個超鏈接相對應(yīng)的地址url瞭吃。然后再找相對應(yīng)的名字name碌嘀。然后再到標(biāo)簽中尋找與name之相對的處理類。
3.根據(jù)用戶的提交的請求方式虱而,去執(zhí)行這個類的get方法筏餐。具體流程圖如下
Serlvet生命周期
1.初始化階段,調(diào)用init()方法
? ? ? ?初始化階段之前牡拇,用戶第一次請求,創(chuàng)建Servlet實(shí)例穆律,調(diào)用servlet的構(gòu)造方法惠呼,先生成servlet的實(shí)例。Servlet容器啟動時會自動裝載某些Servlet峦耘,在Servlet被裝載后剔蹋,Servlet容器會創(chuàng)建一個Servlet實(shí)例,并且調(diào)用Servlet的init()方法進(jìn)行初始化辅髓。在Servlet的整個生命周期中泣崩,init方法只會被調(diào)用一次。
2.響應(yīng)客戶端請求階段洛口,調(diào)用service()方法? ? ??
? ? ? ?在響應(yīng)客戶端請求階段矫付,由service()方法根據(jù)用戶的請求方式選擇執(zhí)行doGet()或doPost()方法。
3.銷毀階段第焰,調(diào)用destroy()方法? ? ? ?
? ? ? 當(dāng)服務(wù)器停止運(yùn)行或者Web應(yīng)用被終止买优、Servlet容器終止以及Servlet容器重新裝載時會調(diào)用Servlet的destroy()方法。?