1. 程式人生 > >Servlet 生命周期

Servlet 生命周期

servlet容器 col 文件中 一次 res 並且 request resp load

一、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 生命周期