Servlet基礎知識總結

主題 概要
Web後端 Java Web後端,Servlet基礎知識總結
編輯 時間
新建 20160704
序號 參考資料
1 Head First Servlet

Servlet簡介

Servlet的存在就是要爲客戶服務。Servlet的任務是得到一個客戶的請求,再發回一個響應。請求攜帶着一些重要的數據,你的servlet代碼必須知道怎麼找到和使用這個請求。響應也攜帶着一些信息,你的servlet代碼必須知道怎麼發送這些信息,或者不發送,而把請求傳遞給其他人(另一個頁面,servlet,或者JSP)。
Servlet受容器的控制。容器控制着servlet的一生,它會創建請求和響應對象,爲servlet創建或分配一個線程,並調用Servlet的Service()方法,把請求和響應對象的引用作爲參數傳遞給servlet。
Servlet工作流程:
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

Servlet生命週期

前面的流程圖是從Servlet的生命中期開始,對於Servlet整個生命週期,需要知道,servlet類什麼時候被加載?什麼時候運行servlet的構造函數?servlet對象能活多久?又該什麼時候清理資源?
Servlet的生命週期很簡單:只有一個主要的狀態:初始化。
如果servlet沒有初始化,則要麼正在進行初始化(運行其構造函數或init方法)、正在撤銷(運行其destory方法)、要麼就是還不存在。
這裏寫圖片描述

Web容器控制器servlet時序圖:
這裏寫圖片描述
在整個生命週期中,涉及到的主要方法有:
1.init():servlet實例被創建之後,並在servlet能爲客戶請求提供服務之前,容器要對servlet調用init()函數。它的作用是使你在servlet處理客戶請求之前有機會對其初始化。可能覆蓋這個函數。
2.service():當第一個客戶到來時,容器會開始一個新線程,或者從線程池分配一個線程,並調用servlet的service方法。這個方法根據請求類型(GET/POST),而調用servlet的對應方法,doGet,doPost等。自己不應該覆蓋這個方法。
3.doGet,doPost:service根據請求類型來進行調用,這裏是Web程序中真正想要做什麼的主要代碼。至少要覆蓋其中之一。

Servlet配置參數

沒有servlet能獨立存在,在當前的的現代Web中,許多組件都是在一起協作共同完成一個目標。你會有模型、控制器、視圖;會用到參數和屬性;還有一些輔助類;怎麼樣把這些部分組織在一起,怎麼讓這些組件共享信息,如何隱藏信息,怎麼讓信息做到線程安全?
主要涉及到的配置參數有:
1.ServletConfig
a) 每個servlet有一個ServletConfig對象,用於向servlet傳遞部署時信息(例如,數據庫或企業bean的查找名),而你不想把這個信息硬編碼到servlet中;
b) 用於訪問ServletContext;
c) 參數在部署文件中的佈置;
2.ServletContext
a) 每個Web應用有一個ServletContext;
b) 用於訪問Web應用參數(也在部署描述文件中配置);
c) 相當於應用中的一個公告欄,可以在這裏放消息(稱爲屬性),應用的其他部分可以訪問這些消息;
d) 用於得到服務器信息,包括容器的名字和版本,以及所支持API的版本等。
3.Web配置文件(DD)
ServletConfig和ServletContext都放在Web.xml部暑文件中,分別爲和對中。容器在初始化servlet的時候爲這個servlet創建一個新的ServletConfig實例。注意,servlet初始化參數只能讀一次。每個Servlet一個ServletConfig,每個Web應用一個ServletContext。

Servlet監聽者

爲了在Servlet或JSP之前運行一部分代碼,需要一個監聽者,通過監聽一個上下文初始化事件,得到上下文初始化參數,並在應用爲客戶服務之前運行一些代碼。主要思路是實現一個ServletContextListener接口,這個實現的主要功能是在servlet之前完成一些初始化工作,並把這個實現了ServletContextListener接口的類註冊到Web部署文件中。
下面是書中一個實現了監聽的完整的例程過程,通過實現ServletContextListener接口在servlet初始化之前,爲ServletContext添加一個“dog”參數。Servlet初始化後,從ServletContext讀出這個”dog”參數。代碼並不多,主要是理解整個過程:
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
除了上下文監聽者,也有其他類型的監聽者,實現過程與此類似。

發佈了38 篇原創文章 · 獲贊 29 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章