當一個web容器產(chǎn)生一個servlet實例時,它的基本順序如下:
1、?servlet容器首先調(diào)用這個servlet的init()方法,它建會初始化一個資源給servlet使用。列如一個logger。這個init()方法在整個servlet的生存周期只會被調(diào)用一次。
2、?init()方法初始化了一個對象,對象繼承了java.servlet.ServletConfig接口。這個對象使servlet能夠初始化那些被聲明在部署描述符的參數(shù)。ServletConfig也使servlet有權(quán)使用一個 javax.servlet.ServletContext 的對象,用這個對象servlet可以記錄信息,分派請求到其他的web組件上并且能夠使用在同一個應(yīng)用上的其他web資源。
3、?servlet容器調(diào)用這個servlet的service()方法去響應(yīng)servlet的一些請求。根據(jù)HttpServlets,service()自動的調(diào)用合適的HTTP方法去處理請求通過調(diào)用servlet的doGet()或者doPost()方法。幾個例子,用戶發(fā)送了個Post請求這時servlet通過doPost()方法的執(zhí)行來響應(yīng)這個請求。
4、?當調(diào)用兩個主要的HttpServlet的doPost(),doGet()方法,這個servlet容器將產(chǎn)生javax..servlet.http.HttpServletRequest和HttpServletResponse 的對象并且把它們作為參數(shù)傳到這些處理請求的方法中。
?
5、?管理一個servlet的生命周期,或者決定這個servlet實例對request請求的處理,在java虛擬機上的存在時間。當一個servlet容器開始移除一個servlet的時候?qū)⒄{(diào)用servlet的destroy()方法,在這個方法中能夠釋放所有的資源,比如一個數(shù)據(jù)庫連接。