淺談域對象、ServletContext、ServletConfig、ServletContextListener

什麼是域對象?

    域對象:保存數據 和 獲取數據,用於在不同資源之間共享數據

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配置信息的對象

      功能:

  1. 獲取Servlet的別名
  2. 獲取Serlvet的初始化參數
  3. 獲取ServletContext對象

  • 創建時機

  ServletConfig對象在servlet對象創建之後,調用init()方法之前創建,該Config對象隨着init方法傳入到servlet中。

 

ServletContext對象

  • 什麼是ServletContext對象?

ServletContext對象叫servlet上下文對象。該對象在一個web應用中只會創建一個對象,一個WEB應用對應一個
ServletContext。代表當前web應用的環境。在當前的web應用中所有servlet都共享一個ServletContext對象。

  • ServletContext對象的生命週期

ServletContext對象的生命週期 隨着WEB項目啓動而啓動,隨着WEB項目的關閉而銷燬。

  • 功能:
  1. 獲取web項目的配置信息和初始化參數
  2. 獲取web項目的項目路徑
  3. 獲取項目中某一虛擬資源的真實路徑(重點!)實現文件下載功能時經常用到!!!
  4. 作爲最大的域對象application共享數據(重點!!)

虛擬路徑:網絡訪問時所使用的路徑,每一個虛擬路徑對應一個實際路徑。

真實路徑:文件在磁盤中存儲的路徑

通過ServletContext獲取真實路徑:

String realpath = servletContext.getRealPath("/index.html");  //根據傳入的虛擬路徑返回文件的真實路徑

ServletContextListener對象

ServletContextListener對象,它能夠監聽 ServletContext 對象的生命週期,實際上就是監聽 Web 應用的生命週期。所以在通知上下文(context)初始化和銷燬的時候,ServletContextListner非常有用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章