Servlet的生命週期是由它部署的容器控制的。當一個請求映射到一個Servlet,Servlet容器執行下面的步驟。
1 若是不存在這個Servlet的實例,容器執行:
a. 加載Servlet類
b. 建立Servlet類實例
c. 經過調用init方法初始化Servlet(initialization is covered in Creating and Initializing a Servlet)
2 容器調用Servlet的service方法,傳入requset和response參數。Service方法會在 Writing Service Methods章節探討。
若是它須要移除這個Servlet,則容器經過調用Servlet的destroy方法來完成。更多信息須要查看Finalizing a Servlet章節。java
你能夠經過定義生命週期事件發生方法的監聽器來監聽Servlet的生命週期並作出反應。使用這些監聽對象,你必須定義而且具體描述這些監聽類。web
你定義的監聽類是必須是監聽接口的一個實現。下面的列表定義了能夠監聽的事件和對應的必須實現的規範的接口。當監聽方法被調用,它將傳入一個適合該事件的容器的信息的事件。例如,一個HttpSessionListener接口的方法會被傳入一個HttpSessionEvent,HttpSessionEvent包含了一個HttpSession。
Servlet 生命週期事件列表code
event:Initialization and destruction
Listener Interface and Event Class:javax.servlet.ServletContextListener and ServletContextEvent對象
event:Initialization and destruction
Listener Interface and Event Class:javax.servlet.ServletContextListener and ServletContextEvent接口
event:Initialization and destruction
Listener Interface and Event Class:javax.servlet.ServletContextListener and ServletContextEvent生命週期
event:Initialization and destruction
Listener Interface and Event Class:javax.servlet.ServletContextListener and ServletContextEvent事件
event:Initialization and destruction
Listener Interface and Event Class:javax.servlet.ServletContextListener and ServletContextEvent部署
event:Initialization and destruction
Listener Interface and Event Class:javax.servlet.ServletContextListener and ServletContextEventservlet
event:Initialization and destruction
Listener Interface and Event Class:javax.servlet.ServletContextListener and ServletContextEventit
event:Initialization and destruction
Listener Interface and Event Class:javax.servlet.ServletContextListener and ServletContextEvent
event:Initialization and destruction
Listener Interface and Event Class:javax.servlet.ServletContextListener and ServletContextEvent
event:Initialization and destruction
Listener Interface and Event Class:javax.servlet.ServletContextListener and ServletContextEvent
使用@WebListener註解能夠獲取特定web程序的各類事件。使用@WebListener註解的類必須實現下列的接口之一。
javax.servlet.ServletContextListener javax.servlet.ServletContextAttributeListener javax.servlet.ServletRequestListener javax.servlet.ServletRequestAttributeListener javax.servlet..http.HttpSessionListener javax.servlet..http.HttpSessionAttributeListener
Servlet執行時,可能發生任意數量的異常。當一個異常發生時,web容器自動生成包含下述信息的默認頁面:
A Servlet Exception Has Occurred
但你也能夠定義特定異常的特定頁面讓容器返回。