什麼是域對象?
域對象:保存數據 和 獲取數據,用於在不同資源之間共享數據。
Web開發中的四個域對象:
按範圍從小到大:page(jsp有效) → request(一次請求) → session(一次會話) → application(當前web應用)
- page域指的是pageContext.
- request域指的是HttpServletRequest
- session 域指的是 HTTPSession
- application 域指的是 ServletContext
page:jsp頁面被執行,生命週期開始,jsp頁面執行完畢,生命週期結束。
request:用戶發送一個請求,開始,服務器返回響應,請求結束,生命週期結束。
session:用戶打開瀏覽器訪問,創建session(開始),session超時或被聲明失效,該對象生命週期結束。
注:一個客戶端對應一個Session,同一用戶使用2個瀏覽器進行訪問同一頁面,會有兩個Session,任意時間打開同一瀏覽器,使用的是同一個Session
application:web應用加載的時候創建。Web應用被移除或服務器關閉,對象銷燬。生命週期結束。
- 一個Servlet對應一個ServletConfig
- 一個Web項目對應一個ServletContext
ServletConfig對象
- 什麼是ServletConfig對象?
ServletConfig對象,叫Servlet配置對象。封裝了Servlet配置信息的對象。
功能:
- 獲取Servlet的別名
- 獲取Serlvet的初始化參數
- 獲取ServletContext對象
- 創建時機
ServletConfig對象在servlet對象創建之後,調用init()方法之前創建,該Config對象隨着init方法傳入到servlet中。
ServletContext對象
- 什麼是ServletContext對象?
ServletContext對象叫servlet上下文對象。該對象在一個web應用中只會創建一個對象,一個WEB應用對應一個
ServletContext。代表當前web應用的環境。在當前的web應用中所有servlet都共享一個ServletContext對象。
- ServletContext對象的生命週期
ServletContext對象的生命週期 隨着WEB項目啓動而啓動,隨着WEB項目的關閉而銷燬。
- 功能:
- 獲取web項目的配置信息和初始化參數
- 獲取web項目的項目路徑
- 獲取項目中某一虛擬資源的真實路徑(重點!)實現文件下載功能時經常用到!!!
- 作爲最大的域對象application共享數據(重點!!)
虛擬路徑:網絡訪問時所使用的路徑,每一個虛擬路徑對應一個實際路徑。
真實路徑:文件在磁盤中存儲的路徑
通過ServletContext獲取真實路徑:
String realpath = servletContext.getRealPath("/index.html"); //根據傳入的虛擬路徑返回文件的真實路徑
ServletContextListener對象
ServletContextListener對象,它能夠監聽 ServletContext 對象的生命週期,實際上就是監聽 Web 應用的生命週期。所以在通知上下文(context)初始化和銷燬的時候,ServletContextListner非常有用。