Web容器維護(hù)servlet實例的生命周期。下面來看看servlet的生命周期,主要分為以下幾個步驟:
init方法。service方法。destroy方法。模型流程圖如下所示 -

如上圖所示,servlet有三種狀態(tài):新,就緒和結(jié)束。 如果servlet實例被創(chuàng)建,則servlet處于新狀態(tài)。 調(diào)用init()方法后,Servlet進(jìn)入就緒狀態(tài)。 在就緒狀態(tài)下,servlet執(zhí)行所有任務(wù)。當(dāng)web容器調(diào)用destroy()方法時,它轉(zhuǎn)移到結(jié)束狀態(tài)。
1.加載Servlet類
類加載器負(fù)責(zé)加載servlet類。 當(dāng)Web容器接收到servlet的第一個請求時,將加載servlet類。
2.創(chuàng)建Servlet實例
Web容器在加載servlet類之后創(chuàng)建一個servlet的實例。servlet實例在servlet生命周期中只創(chuàng)建一次。
3.調(diào)用init方法
Web容器在創(chuàng)建servlet實例后調(diào)用init方法一次。 init方法用于初始化servlet。 它是javax.servlet.Servlet接口的生命周期方法。init方法的語法如下:
public void init(ServletConfig config) throws ServletException
4.調(diào)用service方法
每當(dāng)接收到servlet的請求時,Web容器都會調(diào)用service方法。如果servlet未初始化,則遵循上述前三個步驟,然后調(diào)用service方法。 如果servlet被初始化,它調(diào)用service方法。 請注意,servlet僅初始化一次。 Servlet接口的service方法的語法如下:
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException
5.調(diào)用destroy方法
從服務(wù)中刪除servlet實例之前,Web容器調(diào)用destroy方法。它使servlet有機(jī)會清理所有資源,例如內(nèi)存,線程等。Servlet接口的destroy方法的語法如下:
public void destroy()
下圖描述了一個典型的servlet生命周期場景。
service()方法之前加載servlet。service()方法。