jsp中四個作用域的區別

2021-09-01 18:19:35 字數 3817 閱讀 2698

jsp

內建物件作用域表

名稱作用域

在所有應用程式中有效

session

在當前會話中有效

request

在當前請求中有效

page

在當前頁面有效

首先要宣告一點,所謂

"作用域"就是

"資訊共享的範圍

",也就是說乙個資訊能夠在多大的範圍內有效。

web互動的最基本單位為

請求。每個使用者從進入**到離開**這段過程稱為乙個

會話,乙個伺服器的執行過程中會有多個使用者訪問,就是多個

會話。作用域解釋如下。

:伺服器啟動到停止這段時間。

會話開始到結束這段時間。

請求開始到結束這段時間。

page

:當前頁面從開啟到關閉這段時間。

1.

作用域

作用域就是伺服器啟動到關閉的整段時間,在這個作用域內設定的資訊可以被所有應用程式使用。

作用域上的資訊傳遞是通過

servletcontext

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

object getattribute

(string name

):從中獲取資訊。

void setattribute

(string name, object value

):向作用域中設定資訊。

2.

session作用域

session

作用域比較容易理解,同一瀏覽器對伺服器進行多次訪問,在這多次訪問之間傳遞資訊,就是

session

作用域的體現。

session

是通過httpsession

介面實現的,它提供的主要方法如下所示。

):從session

中獲取資訊。

):向session

中儲存資訊。

:獲取當前請求所在的

session

的物件。

session

的開始時刻比較容易判斷,它從瀏覽器發出第乙個

請求即可認為會話開始。但結束時刻就不好判斷了,因為瀏覽器關閉時並不會通知伺服器,所以只能通過如下這種方法判斷:如果一定的時間內客戶端沒有反應,則認為會話結束。

tomcat

的預設值為

120分鐘,但這個值也可以通過

的setmaxinactiveinterval(int interval)

方法來設定,如果想主動讓會話結束,例如使用者單擊"登出

"按鈕的時候,可以使用

的invalidate()

方法,用於強制結束當前

session。

3.

request作用域

乙個http

請求的處理可能需要多個

servlet

合作,而這幾個

servlet

之間可以通過某種方式傳遞資訊,但這個資訊在請求結束後就無效了。

servlet

之間的資訊共享是通過

介面的兩個方法來實現的。

void setattribute

(string name, object value

):將物件

value

以name

為名稱儲存到

request

作用域中。

object getattribute

(string name

):從request

作用域中取得指定名字的資訊。

jsp中的doget()

、dopost()

方法的第乙個引數就是

物件,使用這個物件的

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

頁(include

,forward

及filter)。

jsp中四個作用域的區別

jsp中四個作用域的區別 jsp內建物件作用域表 名稱作用域 在所有應用程式中有效 session 在當前會話中有效 request 在當前請求中有效 page 在當前頁面有效 首先要宣告一點,所謂 作用域 就是 資訊共享的範圍 也就是說乙個資訊能夠在多大的範圍內有效。web互動的最基本單位為htt...

jsp中四個作用域的區別

jsp內建物件作用域表 名稱作用域 在所有應用程式中有效 session 在當前會話中有效 request 在當前請求中有效 page 在當前頁面有效 首先要宣告一點,所謂 作用域 就是 資訊共享的範圍 也就是說乙個資訊能夠在多大的範圍內有效。web互動的最基本單位為http請求。每個使用者從進入 ...

jsp中四個作用域

jsp中的四個作用域 jsp內建物件作用域表 名稱作用域 在所有應用程式中有效 session 在當前會話中有效 request 在當前請求中有效 page 在當前頁面有效 首先要宣告一點,所謂 作用域 就是 資訊共享的範圍 也就是說乙個資訊能夠在多大的範圍內有效。web互動的最基本單位為http請...