JSP中四大作用域詳解

2021-09-19 16:50:37 字數 2224 閱讀 8447

在學習時讀到一篇好文章,分享給大家~~

**

page(頁面作用域)

jsp預設的作用域是page,這個作用域中的物件只能在該頁面中使用,不允許在其他頁面使用。我們可以通過呼叫pagecontext這個隱含的物件的getattribute()和setattribute()方法去獲取和設定需要傳遞、共享具有這種範圍型別的資料。(pagecontext物件還提供了訪問其他範圍物件的getattribute方法)。page範圍內的物件,在客戶端每次請求jsp頁面時建立,在頁面向客戶端傳送回響應或請求被**(forward)到其他的資源後被刪除。jsp最終會被編譯成servlet檔案。在servlet容器中,每個servlet都只存在乙個例項。但是對於page作用域的屬性來說,在當前頁面設定的屬性只在本次訪問該頁面有效,當你再次訪問該頁面時,又會重新初始化頁面的屬性。

<%

out.print(pagecontext.getattribute("sitename")); // 輸出null

pagecontext.setattribute("sitename", "");

%>

request(請求作用域)

request在一次請求的全過程中有效,即從http請求到伺服器處理結束,返回響應的整個過程,存放在httpservletrequest物件中。一次請求的生命週期從客戶端發起到伺服器接收並響應該請求,或者將該請求forward到另乙個頁面或者servlet進行處理而結束。在此期間,本次請求的引數,屬性都是有效的;一旦客戶端重新整理瀏覽器,重新發起請求,則之前的請求引數和屬性都將失效。需要注意的是,當我們使用動作將當前請求轉向另乙個頁面或者servlet的時候,該請求的引數和屬性也一併轉過去,並不會因為動作而丟失request的引數和屬性。

session(會話作用域)1.page裡的變數沒法從index.jsp傳遞到test.jsp。只要頁面跳轉了,它們就不見了。

2.request裡的變數可以跨越forward前後的兩頁。但是只要重新整理頁面,它們就重新計算了。

3.session的變數一直在累加,開始還看不出區別,只要關閉瀏覽器,再次重啟瀏覽器訪問這頁,session裡的變數就重新計算了。

5.如果把變數放到pagecontext裡,就說明它的作用域是page,它的有效範圍只在當前jsp頁面裡。 從把變數放到pagecontext開始,到jsp頁面結束,你都可以使用這個變數。

6.如果把變數放到request裡,就說明它的作用域是request,它的有效範圍是當前請求週期。 所謂請求週期,就是指從http請求發起,到伺服器處理結束,返回響應的整個過程。在這個過程中可能使用forward的方式跳轉了多個jsp頁面,在這些頁面裡你都可以使用這個變數。

7.如果把變數放到session裡,就說明它的作用域是session,它的有效範圍是當前會話。 所謂當前會話,就是指從使用者開啟瀏覽器開始,到使用者關閉瀏覽器這中間的過程。這個過程可能包含多個請求響應。也就是說,只要使用者不關瀏覽器,伺服器就有辦法知道這些請求是乙個人發起的,整個過程被稱為乙個會話(session),而放到會話中的變數,就可以在當前會話的所有請求裡使用。

舉例說明

假如乙個**website,其包含7個jsp頁面,分別為master.jsp、top.jsp、main.jsp、foot.jsp、login.jsp、success.jsp和news.jsp。master.jsp頁面通過指令包含top.jsp、main.jsp、foot.jsp三個頁面,當使用者通過login.jsp登入成功後,進入success.jsp頁面然後通過此頁面的標籤跳轉到master.jsp頁面中。

我們在success.jsp頁面中加入如下**(用到jstl標籤)

1.變數 test1 只在success.jsp內有效;

2.變數 test2 在success.jsp、master.jsp、top.jsp、main.jsp、foot.jsp中有效;

3.變數 test3 在7個頁面中都有效(包括login.jsp和news.jsp);

4.變數 test4 在整個**,當前也就是7個頁面中都有效(包括login.jsp和news.jsp)。

test3和test4有效範圍一樣,有什麼區別呢?說明一點,假如此時又有另乙個使用者訪問master.jsp頁面,那麼test3相對於這個使用者來說就無效,而test4卻是有效的。或者當第乙個登入的使用者關閉瀏覽器後,再重新訪問master.jsp時,test3就無效,而test4卻有效。

JSP四大作用域

1.page裡的變數 只要頁面跳轉了,它們就不見了。如果把變數放到pagecontext裡,就說明它的作用域是page,它的有效範圍只在當前jsp頁面裡。從把變數放到pagecontext開始,到jsp頁面結束,你都可以使用這個變數。2 request裡的變數可以跨越forward前後的兩頁。但是只...

jsp四大作用域

session作用域 如果把變數放到session裡,就說明它的作用域是session,它的有效範圍是當前會話。所謂當前會話,就是指從使用者開啟瀏覽器開始,到使用者關閉瀏覽器這中間的過程。object httpsession.getattribute string name 從session中獲取資...

JSP四大作用域

1 servletcontext域物件 代表整個web應用的物件 生命週期 在web應用被載入之後立即建立servletcontext物件,伺服器關閉或者web應用被移出容器時將會銷毀servletcontext物件。作用範圍 整個web應用。主要功能 在整個web應用範圍內實現資源的共享。2 se...