四大作用域

2021-08-14 08:52:50 字數 2159 閱讀 3615

名稱作用域

在所有應用程式中有效(全域性)

session

在當前會話中有效

request

當前請求中有效

page

當前頁有效

所謂「作用域」指的是資訊共享範圍,通俗講就是乙個資訊在多大的範圍內有效。

web互動最基本的單位是http請求,當乙個使用者進入**時就形成了乙個會話,在伺服器執行中有多少個使用者進入**就形成了多少個會話,

上的資訊傳遞是通過servletcontext實現的,他形成的時間是伺服器啟動到關閉的整段時間,這段時間作用域形成的資訊能被所有應用程式使用。

它提供的主要方法如下所示:

2,session作用域

session的作用域是比較容易理解的,就是瀏覽器對伺服器進行訪問的多次訪問時傳遞資訊,這就形成了session的作用域。

session是通過httpsession介面實現的。

object httpsession.getattribute(string name):從session中獲取資訊。

void httpsession.setattribute(string name, object value):向session中儲存資訊。

httpsession httpservletrequest.getsession():獲取當前請求所在的session的物件。

它提供的主要方法如上所示;

判斷session開始時比較容易的,從第乙個請求會話開始就已經開啟了,如果想主動讓會話結束可以使用httpsession的invalidate()方法強制結束當前session。

3,request作用域

servlet之間的資訊共享是通過httpservletrequest介面的兩個方法來實現的。

void setattribute(string name, object value):將物件value以name為名稱儲存到request作用域中。

object getattribute(string name):從request作用域中取得指定名字的資訊。

jsp中的doget()、dopost()方法的第乙個引數就是httpservletrequest物件,使用這個物件的 setattribute()方法即可傳遞資訊。

那麼在設定好資訊之後,要通過何種方式將資訊傳給其他的servlet呢?這就要用到requestdispatcher介面的forward()方法,通過它將請求**給其他servlet。

requestdispatcher servletcontext.getrequestdispatcher(string path):取得dispatcher以便**。path為**的目的servlet。

void requestdispatcher.forward(servletrequest request, servletresponse response):將request和response**。

因此,只需要在當前servlet中先通過setattribute()方法設定相應的屬性,然後使用forward()方法進行跳轉,最後在跳轉到的servlet中通過使用getattribute()方法即可實現資訊傳遞。

php的程式設計師可能不太好理解這一段,因為php中沒有**的概念,乙個請求只能由乙個php檔案來處理,所以php中根本沒有request作用域的概念。而servlet則不同,請求可以在應用程式中任意**,所以用request作用域在不同servlet之間傳遞資訊。

需要注意兩點:

**不是重定向,**是在web應用內部進行的。php支援重定向但沒有**。

**對瀏覽器是透明的,也就是說,無論在伺服器上如何**,瀏覽器位址列中顯示的仍然是最初那個servlet的位址。

4. page作用域

page物件的作用範圍僅限於使用者請求的當前頁面,對於page物件的引用將在響應返回給客戶端之後被釋放,或者在請求被**到其他地方後被釋放。對page物件的引用通常儲存在pagecontext物件中。

以上介紹的作用範圍越來越小,request和page的生命週期都是短暫的,它們之間的區別:乙個request可以包含多個page頁。

四大作用域

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

JSP四大作用域

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

jsp四大作用域

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