Servlet 生命周期
一、servlet的生命周期是什麽?
servlet的生命周期分為三個階段:
1.初始化階段:調用 init() 方法。
2.響應用戶請求階段:調用service() 方法。
3.終止階段:調用destory() 方法。
二、servlet的工作原理是什麽?
1.servlet接受和響應用戶請求的過程。
servlet接受用戶的請求。
servlet調用service()方法,service()方法中對請求方式進行匹配,選擇調用doPost方法還是doGet方法。
進入doPost方法或者doGet方法調用業務邏輯層的方法,實現對客戶的響應。
2.接口調用
首先,用戶自定義的servlet必須要實現Servlet接口。因為Servlet接口中定義了五個方法,涉及到了servlet的生命周期。分別是init(),service(),destory().
其次,GenericServlet實現了Servlet接口,HttpServlet繼承於GenericServlet。
再次,GenericServlet是一個通用的,不特定於任何協議的Servlet. HttpServlet是特定於HTTP協議的類。
並且GenericServlet和Servlet接口中並沒有定義dopost方法和doget方法,HttpServlet定義了這些方法。
因此,我們用戶自定義的servlet只需要繼承HttpServlet即可。
3.重寫dopost和doget
HttpServlet實現了servlet接口中的service方法,將請求ServletRequest,ServletResponse強轉為HttpRequest和HttpResponse。
HttpServlet本身定義的doGet,doPost方法,都是返回error信息。因此用戶自定義的servlet 方法都需要重寫dopost和doget方法。
三、初始化階段:
servlet容器裝載servlet。
servlet容器裝載servlet之後,創建一個servlet實例,調用servlet的init() 方法進行初始化。
註:servlet容器裝載servlet的情況,有以下三種:
情況1:servelet容器自動裝載某些servlet。實現自動裝載,只需要在web.xml文件中的<Servlet></servlet>中間添加如下代碼:<loadon - startup>1</loadon - startup>
情況2:Servlet容器啟動後,客戶首次向servlet發送請求。
情況3:Servlet類文件被更新後,重新裝載servlet。
在Servlet的整個生命周期內,init()方法只被調用一次。
四、響應階段:
1.對於到達servlet的請求,servlet容器會創建特定於這個請求的servletRequest對象和responseRquest對象。servletRequest封裝了用戶的請求信息。
2.servlet 調用service方法 : public void service(ServletRequest req,ServletResponse res).
將請求ServletRequest,ServletResponse強轉為HttpRequest和HttpResponse。
並調用自己的service方法調相應的dopost方法或者doget方法。
3.處理完請求之後,通過ServletResponse對象向客戶返回響應信息。
五、終止階段:
當Tomcat關閉時候,servlet容器會調用destroy方法,釋放其占用的資源。
Servlet 生命周期