request 請求對象 類型 javax.servlet.ServletRequest 作用域 Request
response 響應對象 類型 javax.servlet.SrvletResponse 作用域 Page
pageContext 頁面上下文對象 類型 javax.servlet.jsp.PageContext 作用域 Page
session 會話對象 類型 javax.servlet.http.HttpSession 作用域 Session
application 應用程序對象 類型 javax.servlet.ServletContext 作用域 Application
out 輸出對象 類型 javax.servlet.jsp.JspWriter 作用域 Page
config 配置對象 類型 javax.servlet.ServletConfig 作用域 Page
page 頁面對象 類型 javax.lang.Object 作用域 Page
exception 例外對象 類型 javax.lang.Throwable 作用域 page
“exception” 對象則代表了JSP文件運行時所產生的例外對象,此對象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用。
何為作用域
先讓我們看看效果:
大概流程是這樣的,我們訪問index.jsp的時候,分別對pageContext, request, session,application四個作用域中的變量進行累加。(當然先判斷這個變量是不是存在,如果變量不存在,則要把變量初始化成1)。計算完成後就從index.jsp執行forward跳轉到test.jsp。在test.jsp裡再進行一次累加,然後顯示出這四個整數來。
從顯示的結果來看,我們可以直觀的得出結論:
page裡的變量沒法從index.jsp傳遞到test.jsp。只要頁面跳轉了,它們就不見了。
request裡的變量可以跨越forward前後的兩頁。但是只要刷新頁面,它們就重新計算了。
session和application裡的變量一直在累加,開始還看不出區別,只要關閉浏覽器,再次重啟浏覽器訪問這頁,session裡的變量就重新計算了。
application裡的變量一直在累加,除非你重啟tomcat,否則它會一直變大。
作用域規定的是變量的有效期限
如果把變量放到pageContext裡,就說明它的作用域是page,它的有效范圍只在當前jsp頁面裡。
從把變量放到pageContext開始,到jsp頁面結束,你都可以使用這個變量。
如果把變量放到request裡,就說明它的作用域是request,它的有效范圍是當前請求周期。
所謂請求周期,就是指從http請求發起,到服務器處理結束,返回響應的整個過程。在這個過程中可能使用forward的方式跳轉了多個jsp頁面,在這些頁面裡你都可以使用這個變量。
如果把變量放到session裡,就說明它的作用域是session,它的有效范圍是當前會話。
所謂當前會話,就是指從用戶打開浏覽器開始,到用戶關閉浏覽器這中間的過程。這個過程可能包含多個請求響應。也就是說,只要用戶不關浏覽器,服務器就有辦法知道這些請求是一個人發起的,整個過程被稱為一個會話(session),而放到會話中的變量,就可以在當前會話的所有請求裡使用。
如果把變量放到application裡,就說明它的作用域是application,它的有效范圍是整個應用。
整個應用是指從應用啟動,到應用結束。我們沒有說“從服務器啟動,到服務器關閉”,是因為一個服務器可能部署多個應用,當然你關閉了服務器,就會把上面所有的應用都關閉了。
application作用域裡的變量,它們的存活時間是最長的,如果不進行手工刪除,它們就一直可以使用。
與上述三個不同的是,application裡的變量可以被所有用戶共用。如果用戶甲的操作修改了application中的變量,用戶乙訪問時得到的是修改後的值。這在其他scope中都是不會發生的,page, request,session都是完全隔離的,無論如何修改都不會影響其他人的數據。
以上這篇淺談jsp九大內置對象及四個作用域就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。