天天看點

Servlet工作原理

剛開始學Servlet時,隻想着去學怎麼用Servlet了,沒有想過Servlet怎麼工作的?今天花點時間總結一下,給你加油!!!

Servlet生命周期

大家都知道Servlet的生命周期分為三個階段:

   1、初始化階段——調用Servlet的init()方法。在屬于下面情況時,Servlet容器會裝載Servlet:

  • 在web.xml檔案中的<servlet></servlet>之間有添加如下代碼時,Servlet容器啟動時自動裝載某些Servlet,

              這裡的loadon-startup取值有三種情況:

                       1) 小于0,負數的情況下,Web容器啟動時不做執行個體化,當Servlet首次被調用時執行個體化。

                       2) 大于0,Web容器啟動時執行個體Servlet,順序是由小到大,小值先被執行個體化。

                       3) 等于0,相當于是最大正整數,Web容器啟動時最後被執行個體化,

                        注意:不設定的話,則第一次請求時被執行個體化。

  • Servlet容器啟動後,用戶端首次向Servlet發送請求
  • Servlet類檔案被更新後,重新裝載Servlet,重新執行個體化

   2、響應客戶請求階段——調用Servlet的service()方法。

   3、銷毀——調用Servlet的destroy()方法,當Servlet容器(Tomcat)停止或重新啟動時,就會調用Servlet的destroy()方法銷毀,釋放資源。

在整個生命周期中,Servlet隻被執行個體化一次,即單執行個體,隻被銷毀一次

Servlet工作原理

Servlet工作原理基本上都是出于第二階段,即響應客戶請求階段。在這裡就舉個TomcatServlet是如何工作的,看下面幾步:

  1. 用戶端向Servlet容器(Tomcat)發出Http請求
  2. Servlet容器接收用戶端的請求
  3. Servlet容器建立一個HttpServletRequest對象,将用戶端請求的資訊封裝到這個對象中
  4. Servlet容器建立一個HttpServletResponse對象
  5. Servlet容器調用HttpServlet對象的service()方法,把HttpServletRequest對象與HttpServletResponse對象作為參數傳遞給HttpServlet
  6. HttpServlet調用HttpServletRequest對象的相關方法擷取Http請求資訊
  7. HttpServlet調用HttpServletResponse對象的相關方法,生成響應資料
  8. Servlet容器把HttpServlet的響應結果傳給用戶端

對于不了解Servlet的service()方法如何調用doGet()、doPost()等doXxxx()方法的,可以去http://blog.csdn.net/shixhzjy/article/details/8945849看看。

繼續閱讀