容器啟動時的加載順序
一、啟動一個WEB項目的時候,WEB容器會去讀取它的配置文件web.xml,讀取<context-param>結點。
二、容創建一個ServletContext(servlet上下文),這個 web項目的所有部分都將共享這個上下文。
三、容器將<context-param>轉換為鍵值對,並交給 servletContext。 因為listener, filter 等在初始化時會用到這些上下文中的信息,所以要先加載。
四、容器創建<listener>中的類實例,創建監聽器。
五、加載filter和servlet
load- on-startup 元素在web應用啟動的時候指定了servlet被加載的順序,它的值必須是一個整數。
如果它的值是一個負整數或是這個元素不存在,那么容器會在該servlet被調用的時候,加載這個servlet。如果值是正整數或零,容器在配置的時候就加載並初始化這個servlet,容器必須保證值小的先被加載。如果值相等,容器可以自動選擇先加載誰。
web.xml 的加載順序是:context-param -> listener -> filter -> servlet。
容器處理請求的過程
當Web容器接收到來自客戶端的請求信息之后,會根據URL中的Web元件地址信息到Servlet 隊列中查找對應的Servlet對象,如果找到則直接使用,如果沒有找到則加載對應的類,並創建對象。
也就是說,Servlet對象是在第一次被使用的時 候才創建的,並且一旦創建就會被反復使用,不再創建新的對象。所有創建出的Servlet對象會在Web服務器停止運行的時候統一進行垃圾回收。
參考文獻:
http://blog.csdn.net/seelye/article/details/8469575