四個域的作用域范圍大小:PageContext (page域) < request < session < servletContext(application域)
一、ServletContext
1、生命周期:當Web應用被加載進容器時創建代表整個web應用的ServletContext對象,當服務器關閉或Web應用被移除時,ServletContext對象跟着銷毀。
2、作用范圍:整個Web應用。
3、常用功能:
(a)在不同Servlet 之間轉發
(b)讀取資源文件。
二、Request 域
1、生命周期:在service 方法調用前由服務器創建,傳入service方法。整個請求結束,request生命結束。
2、作用范圍:整個請求鏈(請求轉發也存在)。
3、常用功能: 在整個請求鏈中共享數據。例如在Servlet 中處理好的數據交給Jsp顯示,此時參數就可以放置在Request域中帶過去。
三、Session 域
1、生命周期:在第一次調用 request.getSession() 方法時,服務器會檢查是否已經有對應的session,如果沒有就在內存 中創建一個session並返回。當一段時間內session沒有被使用(默認為30分鍾),則服務器會銷毀該session。如果服務器非正常關閉(強行關閉),沒有到期的session也會跟着銷毀。如果調用session提供的invalidate(),可以立即銷毀session。
注意:服務器正常關閉,再啟動,Session對象會進行鈍化和活化操作。同時如果服務器鈍化的時間在session 默認銷毀時間之內,則活化后session還是存在的。否則Session不存在。如果JavaBean 數據在session鈍化時,沒有實現Serializable 則當Session活化時,會消失。
2、作用范圍:一次會話。
3、常用功能:為瀏覽器創建獨一無二的內存空間,在其中保存會話相關的信息。
四、PageContext 域
1、生命周期:當對JSP的請求時開始,當響應結束時銷毀。
2、作用范圍:整個JSP頁面,是四大作用域中最小的一個,即超過這個頁面就不能夠使用了。(所以使用pageContext對象向其它頁面傳遞參數是不可能的.)
3、常用功能:
(1)獲取其它八大隱式對象,可以認為是一個入口對象。
(2)獲取其所有域中的數據
(3)跳轉到其他資源,其身上提供了forward和include方法,簡化重定向和轉發的操作。