注:在閱讀下文前,建議先去查看JCP的Servlet規範。spa
1.先來看Servlet接口中定義的方法
![](http://static.javashuo.com/static/loading.gif)
圖1 Servlet接口中定義的方法線程
Servlet life cycle:每一個Servlet都會經歷初始化、接收請求、終止服務,分別對應Servlet的init方法、service方法、destroy方法。blog
- init方法:Servlet容器在加載了Servlet以後,初始化Servlet時,會先調用init方法,每一個Servlet的init方法只會被調用一次。傳入到init方法的ServletConfig是個接口,經過ServletConfig能夠得到ServletContext。要注意的是若是咱們本身覆寫了init方法,那麼這個方法不能拋出異常,不然容器不會讓這個Servlet提供服務。
- service方法:容器每次接收到請求後,都會將請求封裝爲ServletRequest,調用Servlet的service方法,好比A、B倆個請求都轉發到同一個Servlet,那麼A、B倆個請求是由倆個線程來處理的。因爲每次請求都會調用service方法,因此HttpServlet覆寫了service方法,並根據Http的請求方法,分別調用不一樣的方法,好比doGet、doPost、doDelete方法等,doGet、doPost、doDelete方法是HttpServlet中新增的,Servlet中並無這些方法。
End of Service:每一個Servlet,被容器初始化後,Servlet實例不必定會一直存在,好比容器有可能會過段時間後,關閉該Servlet實例。關閉Servlet實例時會調用destroy方法。若是容器又須要該Servlet實例時,那麼此時容器須要新建一個Servlet實例。接口