天天看點

Jsp-四大作用域pagerequestsessionapplication

JSP中的四大作用域,主要是指以下四個:

* page作用域
* request作用域
* session作用域
* application作用域
           

這四個作用域的作用範圍,由上到下是一個比一個大。

page

page直譯就是頁面的意思,是以page作用域就比較好了解了——page作用域表示隻在目前頁面有效。當程式運作跑出了目前的頁面,你就無法在其它的頁面通路目前頁面設定的屬性值。

request

request表示一次用戶端的請求。一次請求的生命周期從用戶端發起到伺服器接收并響應該請求,或者将該請求forward到另一個頁面或者Servlet進行處理而結束。在此期間,本次請求的參數,屬性都是有效的;一旦用戶端重新整理浏覽器,重新發起請求,則之前的請求參數和屬性都将失效。

特别需要注意的是,當我們使用動作将目前請求轉向另一個頁面或者Servlet的時候,該請求的參數和屬性也一并轉過去,并不會因為動作而丢失request的參數和屬性。

session

我一直都在強調session是一個非常重要的概念。當我們向伺服器發送第一個請求開始,隻要頁面不關閉,或者會話未過期(預設30分鐘),或者未調用HttpSession的invalidate()方法,接下來的操作都屬于同一次會話的範疇。

在JSP中,每當向伺服器發送一個請求,伺服器響應這個請求的時候,會在用戶端的Cookie中寫一個session id值。每次發送請求的時候,會将該session id值一起發送到伺服器端,伺服器端根據該session id值來判斷每次請求是否屬于同一個session的範疇之内。

application

application的作用域是最廣的,它代表着整個Web應用的全局變量,對每一個頁面,每一個Servlet都是有效的。當我們在application中設定屬性時,這個屬性在任意的一個頁面都是可以通路的。

在application作用域中設定的屬性如果不手動調用removeAttribute函數進行删除的話,那麼application中的屬性将永遠不會删除,如果Web容器發生重新開機,此時application範圍内的所有屬性都将丢失。