jsp-9大內置對象簡介


產生背景

JSP引擎在調用JSP對應的jspServlet時,會傳遞或創建9個與web開發相關的對象供jspServlet使用。JSP技術的設計者為便於開發人員在編寫JSP頁面時獲得這些web對象的引用,特意定義了9個相應的變量,開發人員在JSP頁面中通過這些變量就可以快速獲得這9大對象的引用。九個內置對象如下圖所示:

request

response

config

session

application

 

在JSP中,尤其重要的是pageContext對象。

pageContext是內置對象中最重要的一個對象,它代表着JSP頁面編譯后的內容(也就是JSP頁面的運行環境)!

既然它代表了JSP頁面編譯后的內容,理所當然的:它封裝了對其他8大內置對象的引用!,也就是說,通過pageContext可以獲取到其他的8個內置對象!

pageContext作為域對象

  • 類似於request,session,ServletContext作為域對象而言都有以下三個方法

    • setAttribute(String name,Objcet o)

    • getAttribute(String name)

    • removeAttribute(String name)

  • 當然了,pageContext也不例外,pageContext也有這三個方法

  • pageContext本質上代表的是當前JSP頁面編譯后的內容,作為域對象而言,它就代表着當前JSP頁面(也就是page)!也就是說:pageContext域對象只在page范圍內有效,超出了page范圍就無效了

  • pageContext本質上代表着編譯后JSP的內容,pageContext還封裝了訪問其他域的方法

  • 上面的pageContext默認是page范圍的,但pageContext對象重載了set、get、removeAttribute這三個方法

  • getAttribute(String name,int scope)

  • setAttribute(String name,Object value,int scope)

  • removeAttribute(String name,int scope)

  • 多了一個設置域范圍的一個參數,如果不指定默認就是page。當然了,pageContext把request、session、application、page這幾個域對象封裝着了靜態變量供我們使用

    • PageContext.APPLICATION_SCOPE

    • PageContext.SESSION_SCOPE

    • PageContext.REQUEST_SCOPE

    • PageContext.PAGE_SCOPE

  • pageContexst還有這么一個方法:

    • findAttribute(String name)

  • 該方法會查找各個域的屬性,從小到大開始尋找!也就是page—>request->session->application。

  •  

out對象:

  • out對象用於向瀏覽器輸出數據,與之對應的是Servlet的PrintWriter對象。然而這個out對象的類型並不是PrintWriter,是JspWriter,可以簡單理解為:JspWriter就是帶緩存的PrintWrieter

  • 只有向out對象中寫入了內容,且滿足如下任何一個條件時,out對象才去調用ServletResponse.getWriter方法,並通過該方法返回的PrintWriter對象將out對象的緩沖區中的內容真正寫入到Servlet引擎提供的緩沖區中

    • 設置page指令的buffer屬性關閉了out對象的緩存功能

    • out對象的緩沖區已滿

    • 整個JSP頁面結束

  • 一般我們在JSP頁面輸出都是用表達式(<%=%>),所以out對象用得並不是很多

 page對象

內置對象page是HttpJasPage對象,其實page對象代表的就是當前JSP頁面,是當前JSP編譯后的Servlet類的對象。也就是說:page對象相當於普通java類的this。

 exception對象

  • 內置對象exception是java.lang.Exception類的對象,exception封裝了JSP頁面拋出的異常信息。exception經常被用來處理錯誤頁面。

 

各對象作用域范圍

  1. page【只在一個頁面中保存屬性,跳轉頁面無效】

  2. requet【只在一次請求中保存屬性,服務器跳轉有效,瀏覽器跳轉無效】

  3. session【在一個會話范圍中保存屬性,無論何種跳轉均有效,關閉瀏覽器后無效】

  4. application【在整個服務器中保存,所有用戶都可以使用】

應用場景:

  1. request:如果客戶向服務器發請求,產生的數據,用戶看完就沒用了,像這樣的數據就存在request域,像新聞數據,屬於用戶看完就沒用的

  2. session:如果客戶向服務器發請求,產生的數據,用戶用完了等一會兒還有用,像這樣的數據就存在session域中,像購物數據,用戶需要看到自己購物信息,並且等一會兒,還要用這個購物數據結帳

  3. servletContext:如果客戶向服務器發請求,產生的數據,用戶用完了,還要給其它用戶用,像這樣的數據就存在servletContext域中,像聊天數據

總結

  1. request 用戶端請求,此請求會包含來自GET/POST請求的參數

  2. response 網頁傳回用戶端的回應

  3. pageContext 網頁的屬性是在這里管理,代表的編譯后JSP內容

  4. session 與請求有關的會話期

  5. application servlet 正在執行的內容

  6. out 用來傳送回應的輸出

  7. config servlet的構架部件

  8. page JSP網頁本身

  9. exception 針對錯誤網頁,未捕捉的例外


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM