兩個init方法的區別

容器建立了Servlet實例後,它將調用實例的init(ServletConfig)方法初始化Servlet。該方法的參數ServletConfig對象包含了在Web應用程序的部署描述文件中指定的初始化參數。在init(ServletConfig)方法調用後,容器將調用無參數的init()方法,以後Servlet就被初始化了。重複初始化一個對象是沒有意義的,所以在Servlet生命週期中init()方法僅被調用一次。數據庫

    有時,能夠在容器啓動時不對Servlet初始化,而是當容器接收到對該Servlet第一次請求時纔對它初始化,這稱爲延遲加載(Lazy Loading)。這種初始化的優勢是能夠大大提升容器的啓動時間。但缺點是,若是在Servlet初始化時要完成不少任務,如從數據庫中緩存靜態數據,則發送第一個請求的客戶等待時間會很長。在不少狀況下,這是不可接受的。爲此,Servlet規範定義了<load-on-startup>元素,它能夠在部署描述文件中指定當容器啓動時裝載並初始化Servlet。在請求達到以前裝載Servlet的過程稱爲預裝載或預初始化緩存

    在Servlet實例正常初始化後,它就準備爲客戶提供服務。當容器接收到對該Servlet的請求時,都會建立一個新的線程,經過調用service(ServletRequest,ServletResponse)方法將請求分配給該Servlet實例。有多少個請求,服務器將建立多少個線程。service()方法將檢查HTTP請求的類型(GET、POST等)並調用相應的doGet()、doPost()等方法。服務器

相關文章
相關標籤/搜索