Jsp內置對象

Jsp內置對象

經過pageContext 對象能夠獲取 JSP頁面的out、request、reponse、session、application 等對象,例如:經過 pageConext對象的 getServletConfig() 方法能夠獲取一個config對象瀏覽器

「exception」 對象則表明了JSP文件運行時所產生的例外對象,此對象不能在通常JSP文件中直接使用,而只能在使用了「<%@ page isErrorPage="true "%>」的JSP文件中使用。tomcat

何爲做用域

  先讓咱們看看效果:服務器

大概流程是這樣的,咱們訪問index.jsp的時候,分別對pageContext, request, session,application四個做用域中的變量進行累加。(先判斷這個變量是否是存在,若是變量不存在,則要把變量初始化成1)。計算完成後就從index.jsp執行forward跳轉到test.jsp。在test.jsp裏再進行一次累加,而後顯示出這四個整數來。session

  從顯示的結果來看,咱們能夠直觀的得出結論:app

  1. page裏的變量無法從index.jsp傳遞到test.jsp。只要頁面跳轉了,它們就不見了。jsp

  2. request裏的變量能夠跨越forward先後的兩頁。可是隻要刷新頁面,它們就從新計算了。對象

  3. session和application裏的變量一直在累加,開始還看不出區別,只要關閉瀏覽器,再次重啓瀏覽器訪問這頁,session裏的變量就從新計算了。圖片

  4. application裏的變量一直在累加,除非你重啓tomcat,不然它會一直變大。作用域

做用域規定的是變量的有效期限

  • 若是把變量放到pageContext裏,就說明它的做用域是page,它的有效範圍只在當前jsp頁面裏。

  從把變量放到pageContext開始,到jsp頁面結束,你均可以使用這個變量。部署

  • 若是把變量放到request裏,就說明它的做用域是request,它的有效範圍是當前請求週期。

  所謂請求週期,就是指從http請求發起,到服務器處理結束,返回響應的整個過程。在這個過程當中可能使用forward的方式跳轉了多個jsp頁面,在這些頁面裏你均可以使用這個變量。

  • 若是把變量放到session裏,就說明它的做用域是session,它的有效範圍是當前會話。

  所謂當前會話,就是指從用戶打開瀏覽器開始,到用戶關閉瀏覽器這中間的過程。這個過程可能包含多個請求響應。也就是說,只要用戶不關瀏覽器,服務器就有辦法知道這些請求是一我的發起的,整個過程被稱爲一個會話(session),而放到會話中的變量,就能夠在當前會話的全部請求裏使用。

  • 若是把變量放到application裏,就說明它的做用域是application,它的有效範圍是整個應用。

  整個應用是指從應用啓動,到應用結束。咱們沒有說「從服務器啓動,到服務器關閉」,是由於一個服務器可能部署多個應用,固然你關閉了服務器,就會把上面全部的應用都關閉了。

  application做用域裏的變量,它們的存活時間是最長的,若是不進行手工刪除,它們就一直可使用。

  與上述三個不一樣的是,application裏的變量能夠被全部用戶共用。若是用戶甲的操做修改了application中的變量,用戶乙訪問時獲得的是修改後的值。這在其餘scope中都是不會發生的,page, request,session都是徹底隔離的,不管如何修改都不會影響其餘人的數據。

相關文章
相關標籤/搜索