首頁 >Java >java教程 >jsp的四大作用域是什麼

jsp的四大作用域是什麼

(*-*)浩
(*-*)浩原創
2019-05-15 15:20:1728079瀏覽

首先要聲明一點,所謂“作用域”就是“資訊共享的範圍”,也就是說一個資訊能夠在多大的範圍內有效。 4個JSP內建物件的作用域分別為:application、session、request、page 。

推薦課程:Java教學

jsp的四大作用域是什麼

jsp的四大作用域分別是:

1、application 作用域

如果把變數放到application裡,就表示它的作用域是application,它的有效範圍是整個應用。整個應用是指從應用程式啟動,到應用程式結束。我們沒有說“從伺服器啟動,到伺服器關閉”,是因為一個伺服器可能部署多個應用,當然你關閉了伺服器,就會把上面所有的應用程式都關閉了。 application作用域裡的變量,它們的存活時間是最長的,如果不進行手動刪除,它們就一直可以使用。

Object getAttribute(String name)  //從application中取得資訊;

void setAttribute(String name,Object value)  //向application作用域設定資訊。

2、session作用域

如果把變數放到session裡,就表示它的作用域是session,它的有效範圍就是目前會話。所謂目前會話,就是指從使用者開啟瀏覽器開始,到使用者關閉瀏覽器這中間的過程。

Object HttpSession.getAttribute(String name)  //從session中取得資訊。

void HttpSession.setAttribute(String name,Object value)//向session中儲存資訊。

HttpSessionHttpServletRequest.getSessio()  //取得目前請求所在的session的物件。

session從瀏覽器發出第一個HTTP請求即可認為會話開始。但結束就不好判斷了,因為瀏覽器關閉時並不會通知伺服器,所以只能透過以下這種方法判斷:如果一定的時間內客戶端沒有反應,則認為會話結束。 Tomcat的預設值為120分鐘,但這個值也可以透過HttpSession的setMaxInactiveInterval()方法來設定:

void setMaxInactiveInterval(int interval)

如果想主動讓會話結束,例如用戶點選「登出」按鈕的時候,可以使用HttpSession 的invalidate()方法,用來強制結束目前session:void invalidate()

Session刪除的時間是:

1)  Session逾時:超時指的是連續一定時間伺服器沒有收到該Session所對應客戶端的請求,並且這個時間超過了伺服器設定的Session逾時的最大時間。

2)  程式呼叫HttpSession.invalidate()

#3)  伺服器關閉或服務停止

注意:

#1)  存取*.html的靜態資源因為不會被編譯為Servlet,也就不涉及session的問題。

2)  當JSP頁面沒有明確禁止session的時候,在開啟瀏覽器第一次要求該jsp的時候,伺服器會自動為其建立一個session,並賦予其一個sessionID,傳送給客戶端的瀏覽器。

3)  由於session會消耗記憶體資源,因此,如果不打算使用session,應該在所有的JSP中關閉它。

4)  session不會應該瀏覽器的關閉而刪除,只能透過上述三種方式刪除。

session存放在哪裡? -----------伺服器端的記憶體中。

3、Request作用域

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

請求轉送:servlet. getRequestDispatcher("new.jsp").forward(req,resp);

注意:

##1、轉送是伺服器行為,而重定向是客戶端行為。

2、無論在伺服器上如何轉發,瀏覽器網址列中顯示的仍然是最初那個Servlet的位址。

4、page作用域

page物件的作用範圍僅限於使用者要求的目前頁面

request和page的生命週期都是短暫的,它們之間的差異:一個request可以包含多個page頁(include,forward及filter)。

以上是jsp的四大作用域是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn