jsp九大內建對象和四個範圍

來源:互聯網
上載者:User

標籤:它的   ext   tomcat   app   刪除   範圍   使用者   檔案   過程   

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九大內建對象和四個範圍

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.