1. servlet體系結構
servelt我們可以理解為一個實現了可以接受請求并響應請求的java類。servlet類的體系結構如下圖
![]()
GenericServlet抽象類-----實現了Servlet接口和ServletConfig接口和Serializable接口
HttpServlet抽象類繼-----承于GenericServlet抽象類
2.servlet生命周期
init()方法和destory()方法都只調用一次,service()方法每接受一個請求,都會調用一次service()方法。
2.1Servlet容器實例化某個Servlet對象
在web.xml里面可以配置一個標簽,讓某個servlet類在Servlet容器啟動的時候就創建這個servlet類的一個對象。如果不配置servlet容器啟動創建servlet對象,則當某個servlet接收到客戶端的請求時,才創建這個servlet對象
2.2 某個Servlet對象初始化
Servlet實例化后,會調用servlet的init()方法,這個方法就是用來初始化的。你可以重寫這個方法,根據自己的需求去初始化這個servlet實例。
如果你在web.xml為這個Servlet實例配置了初始化參數,如下
<servlet>
<servlet-name>LoginDispatcher</servlet-name>
<servlet-class>requestdispatcher.LoginDispatcher</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>zhangsan</param-value>
</init-param>
</servlet>
你可以調用ServletConfig接口的getInitParameter()方法去獲得這些初始化參數。由上面類圖我們可以知道GenericServlet抽象類實現了ServletConfig接口。
這里有兩個異常要介紹:
ServletException:一般用來指明某個servlet初始化失敗,例如找不到初始化參數
UnavailbleException:用于通知servlet容器該servlet實例不可用,例如當這個servlet在初始化的時候調用數據庫連接失敗,那么這個Servlet就不可用了,于是必須通知Servlet容器,告訴它這個Servlet對象不可用
2.3 Servlet處理請求
當客戶端發送請求給某個servlet的時候,servlet會調用該servlet的service()方法去處理請求。在處理請求期間發生錯誤會拋出ServletException和UnavialbleException。
當UnavialbleException標志該servlet為永久不可用的servlet時,servlet容器就會調用該servlet的destory()方法銷毀該servlet,并返回給客戶端HTTP404錯誤(請求的資源不可用或不存在)。
當UnavialbleException標志該servlet為暫時不可用的servlet時,servlet容器將返回給客戶端HTTP503錯誤(服務器忙,不能處理請求)
2.4 Servlet的銷毀
當servlet容器要銷毀某個servlet之前,servlet容器會調用該servlet的destory()方法,去釋放一些資源,例如:數據庫連接等等
3. servlet生命周期時序圖
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
