標籤:
何為範圍
大概流程是這樣的,我們訪問index.jsp的時候,分別對pageContext, request, session,application四個範圍中的變數進行累加。(當然先判斷這個變數是不是存在,如果變數不存在,則要把變數初始化成1)。計算完成後就從index.jsp執行forward跳轉到test.jsp。在test.jsp裡再進行一次累加,然後顯示出這四個整數來。
page裡的變數沒法從index.jsp傳遞到test.jsp。只要頁面跳轉了,它們就不見了。
session和application裡的變數一直在累加,開始還看不出區別,只要關閉瀏覽器,再次重啟瀏覽器訪問這頁,session裡的變數就重新計算了。
範圍規定的是變數的有效期間限
從把變數放到pageContext開始,到jsp頁面結束,你都可以使用這個變數。
所謂請求周期,就是指從http請求發起,到伺服器處理結束,返迴響應的整個過程。在這個過程中可能使用forward的方式跳轉了多個jsp頁面,在這些頁面裡你都可以使用這個變數。
所謂當前會話,就是指從使用者開啟瀏覽器開始,到使用者關閉瀏覽器這中間的過程。這個過程可能包含多個請求響應。也就是說,只要使用者不關瀏覽器,伺服器就有辦法知道這些請求是一個人發起的,整個過程被稱為一個會話(session),而放到會話中的變數,就可以在當前會話的所有請求裡使用。
整個應用是指從應用啟動,到應用結束。我們沒有說“從伺服器啟動,到伺服器關閉”,是因為一個伺服器可能部署多個應用,當然你關閉了伺服器,就會把上面所有的應用都關閉了。
與上述三個不同的是,application裡的變數可以被所有使用者共用。如果使用者甲的操作修改了application中的變數,使用者乙訪問時得到的是修改後的值。這在其他scope中都是不會發生的,page, request,session都是完全隔離的,無論如何修改都不會影響其他人的資料。
JSP九大內建對象和四個範圍