jsp九大內置對象和四大做用域

javax包:java

request           請求對象             類型 javax.servlet.ServletRequest        做用域 Request瀏覽器

response          響應對象              類型 javax.servlet.SrvletResponse        做用域 Pagetomcat

pageContext       頁面上下文對象        類型 javax.servlet.jsp.PageContext       做用域 Page服務器

session           會話對象              類型 javax.servlet.http.HttpSession      做用域 Sessionsession

application       應用程序對象          類型 javax.servlet.ServletContext        做用域 Applicationapp

out               輸出對象              類型 javax.servlet.jsp.JspWriter         做用域 Pagejsp

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都是徹底隔離的,不管如何修改都不會影響其餘人的數據。

相關文章
相關標籤/搜索