Servlet是對支持Java的服務器的一般擴充。它最常見的用途是擴展Web服務器,提供非常安全的、可移植的、易於使用的CGI替代品。它是一種動態加載的模塊,為來自Web服務器的請求提供服務。它完全運行在Java虛擬機上。由於它在服務器端運行,因此它不依賴於浏覽器的兼容性。
Servlet容器:
負責處理客戶請求、把請求傳送給Servlet並把結果返回給客戶。不同程序的容器實際實現可能有所變化,但容器與Servlet之間的接口是由Servlet API定義好的,這個接口定義了Servlet容器在Servlet上要調用的方法及傳遞給Servlet的對象類。
Servlet生命周期:
1、Servlet容器創建Servlet的一個實例
2、容器調用該實例的init()方法
3、如果容器對該Servlet有請求,則調用此實例的service()方法
4、容器在銷毀本實例前調用它的destroy()方法
5、銷毀並標記該實例以供作為垃圾收集
一旦請求了一個Servlet,就沒有辦法阻止容器執行一個完整的生命周期。
容器在Servlet首次被調用時創建它的一個實例,並保持該實例在內存中,讓它對所有的請求進行處理。容器可以決定在任何時候把這個實例從內存中移走。在典型的模型中,容器為每個Servlet創建一個單獨的實例,容器並不會每接到一個請求就創建一個新線程,而是使用一個線程池來動態的將線程分配給到來的請求,但是這從Servlet的觀點來看,效果和為每個請求創建一個新線程的效果相同。