Page、request、session、application四個域的區別

 1.簡單說 page指當前頁面。在一個jsp頁面裏有效


2.request 指從http請求到服務器處理結束,返回響應的整個過程。在這個過程中使用forward方式跳轉多個jsp。在這些頁面裏你都可以使用這個變量。


3.Session 有效範圍當前會話,從瀏覽器打開到瀏覽器關閉這個過程。


4.application它的有效範圍是整個應用。


作用域裏的變量,它們的存活時間是最長的,如果不進行手工刪除,它們就一直可以使用


page裏的變量沒法從index.jsp傳遞到test.jsp。只要頁面跳轉了,它們就不見了。


request裏的變量可以跨越forward前後的兩頁。但是隻要刷新頁面,它們就重新計算了。

sessionapplication裏的變量一直在累加,開始還看不出區別,只要關閉瀏覽器,再次重啓瀏覽器訪問這頁,session裏的變量就重新計算了。
application裏的變量一直在累加,除非你重啓tomcat,否則它會一直變大。


而作用域規定的是變量的有效期限。


如果把變量放到pageContext裏,就說明它的作用域是page,它的有效範圍只在當前jsp頁面裏。

從把變量放到pageContext開始,到jsp頁面結束,你都可以使用這個變量。


如果把變量放到request裏,就說明它的作用域是request,它的有效範圍是當前請求週期。


所謂請求週期,就是指從http請求發起,到服務器處理結束,返回響應的整個過程。在這個過程中可能使用forward的方式跳轉了多個jsp頁面,在這些頁面裏你都可以使用這個變量。


如果把變量放到session裏,就說明它的作用域是session,它的有效範圍是當前會話。


所謂當前會話,就是指從用戶打開瀏覽器開始,到用戶關閉瀏覽器這中間的過程。這個過程可能包含多個請求響應。也就是說,只要用戶不關瀏覽器,服務器就有辦法知道這些請求是一個人發起的,整個過程被稱爲一個會話(session),而放到會話中的變量,就可以在當前會話的所有請求裏使用。

如果把變量放到application裏,就說明它的作用域是application,它的有效範圍是整個應用。

整個應用是指從應用啓動,到應用結束。我們沒有說從服務器啓動,到服務器關閉,是因爲一個服務器可能部署多個應用,當然你關閉了服務器,就會把上面所有的應用都關閉了。

application作用域裏的變量,它們的存活時間是最長的,如果不進行手工刪除,它們就一直可以使用。

與上述三個不同的是,application裏的變量可以被所有用戶共用。如果用戶甲的操作修改了application中的變量,用戶乙訪問時得到的是修改後的值。這在其他scope中都是不會發生的,page, request, session都是完全隔離的,無論如何修改都不會影響其他人的數據。

 

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