更新時間:2020-06-11 14:59:55 來源:動力節點 瀏覽2229次
程序員在寫代碼的時候,難免會遇到作用域的問題,今天我們要談的也是JSP的四大作用域。本文主要總結了JSP四大作用域page、request、session和application和它們的請求范圍。
1、page
page直譯就是頁面的意思,所以page作用域就比較好理解了——page作用域表示只在當前頁面有效,也就是用戶請求的頁面有效。當當前頁面關閉或轉到其他頁面時,page對象將在響應回饋給客戶端后釋放。當程序運行跑出了當前的頁面,你就無法在其它的頁面訪問當前頁面設置的屬性值。
我們都知道,JSP最終會被編譯成Servlet文件。在Servlet容器中,每個Servlet都只存在一個實例。但是對于page作用域的屬性來說,在當前頁面設置的屬性只在本次訪問該頁面有效,當你再次訪問該頁面時,又會重新初始化頁面的屬性。例如以下代碼:
<%
out.print(pageContext.getAttribute("SiteName")); // 輸出null
pageContext.setAttribute("SiteName", "果凍想-一個原創技術文章分享網站");
%>
當我在瀏覽器訪問該頁面時會輸出null;當我再重新打開一個該頁面時,還會輸出null,并不會輸出”果凍想-一個原創技術文章分享網站”。也就是說,page作用域范圍的不會存在線程安全的問題,每一次訪問同一個頁面,設置的page作用域的屬性都是不一樣的。
2、request作用域
request表示一次客戶端的請求,他在請求中有效。
request可以通過setAttribute()和getAttribute方法存取值實現頁面中的信息傳遞,也可以通過forward()方法進行頁面間的跳轉(需要注意的是request是轉發不是重定向,轉發相對于瀏覽器來說是透明的,也就是無論頁面如何跳轉,地址欄上顯示的依舊是最初的地址,瀏覽器感知不到),在這些轉發頁面中都可以使用request中存儲的信息。
一次請求的生命周期從客戶端發起到服務器接收并響應該請求,或者將該請求forward到另一個頁面或者Servlet進行處理而結束。在此期間,本次請求的參數,屬性都是有效的;一旦客戶端刷新瀏覽器,重新發起請求,則之前的請求參數和屬性都將失效。
特別需要注意的是,當我們使用<jsp:forward .../>動作將當前請求轉向另一個頁面或者Servlet的時候,該請求的參數和屬性也一并轉過去,并不會因為<jsp:forward .../>動作而丟失request的參數和屬性。
3、session作用域
session作用域在當前回話中有效。當我們向服務器發送第一個請求開始,只要頁面不關閉,或者會話未過期(默認30分鐘),或者未調用HttpSession的invalidate()方法,接下來的操作都屬于同一次會話的范疇。當一個臺電腦上的同一瀏覽器對服務器進行多次訪問時,在這多次訪問之間傳遞的信息就是session作用域的范圍。它從瀏覽器發出第一個HTTP請求即可認為會話開始,在瀏覽器關閉時結束會話,但是會話結束的時間是不確定的,因為在瀏覽器關閉時并不會通知服務器,一般Tomcat設置的默認時間為120分鐘,也可以通過setMaxInactiveInterval(int)方法進行設置,或是通過invalidate()方法強制結束當前會話。session也可以通過setAttribute賦值和getAttribute取值。
在JSP中,每當向服務器發送一個請求,服務器響應這個請求的時候,會在客戶端的Cookie中寫一個session id值。每次發送請求的時候,會將該session id值一起發送到服務器端,服務器端根據該session id值來判斷每次請求是否屬于同一個session的范疇之內。
4、application作用域
application的作用域是最廣的,它在所有的應用程序中都有效。它代表著整個Web應用的全局變量,對每一個頁面,每一個Servlet都是有效的。當我們在application中設置屬性時,這個屬性在任意的一個頁面都是可以訪問的。
也就是當服務器開始到服務器結束這段時間,application作用域中存儲的數據都是有效的,同樣可以通過setAttribute賦值和getAttribute取值。要注意application里的變量可以被所有用戶共用,當一個用戶對application中的變量做了修改,其他用戶再訪問的是修改后的值。
在application作用域中設置的屬性如果不手動調用removeAttribute函數進行刪除的話,那么application中的屬性將永遠不會刪除,如果Web容器發生重啟,此時application范圍內的所有屬性都將丟失。
Javaweb視頻教程下載
JSP視頻教程:http://www.dabaquan.cn/javavideo/120.html
以上就是動力節點java培訓機構的小編針對“Javaweb視頻下載之JSP四大作用”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習