JSP九大內置對象及其作用以及四大域對象


一,什么是內置對象?

在jsp開發中會頻繁使用到一些對象,如ServletContext HttpSession PageContext等.如果每次我們在jsp頁面中需要使用這些對象都要自己親自動手創建就會特別的繁瑣.SUN公司因此在設計jsp時,在jsp頁面加載完畢之后自動幫開發者創建好了這些對象,開發者只需要使用相應的對象調用相應的方法即可.這些系統創建好的對象就叫做內置對象.

在servlet程序中,如果開發者希望使用session對象,必須通過request.getSession()來得到session對象;而在jsp程序中,開發中可直接使用session(系統幫我們創建好的session對象的名字就叫session)調用相應的方法即可,如:session.getId().

   JSP中一共預先定義了9個這樣的對象,分別為:request、response、session、application、out、pagecontext、config、page、exception

內置對象(又叫隱含對象)特點: 
1. 由JSP規范提供,不用編寫者實例化。 
2. 通過Web容器實現和管理 
3. 所有JSP頁面均可使用 
4. 只有在腳本元素的表達式或代碼段中才可使用(<%=使用內置對象%>或<%使用內置對象%>)

1、request對象

request 對象是 javax.servlet.httpServletRequest類型的對象。 該對象代表了客戶端的請求信息,主要用於接受通過HTTP協議傳送到服務器的數據。(包括頭信息、系統信息、請求方式以及請求參數等)。request對象的作用域為一次請求。

2、response對象

response 代表的是對客戶端的響應,主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內有效。

3、session對象

session 對象是由服務器自動創建的與用戶請求相關的對象。服務器為每個用戶都生成一個session對象,用於保存該用戶的信息,跟蹤用戶的操作狀態。session對象內部使用Map類來保存數據,因此保存數據的格式為 “Key/value”。 session對象的value可以使復雜的對象類型,而不僅僅局限於字符串類型。

4、application對象

 application 對象可將信息保存在服務器中,直到服務器關閉,否則application對象中保存的信息會在整個應用中都有效。與session對象相比,application對象生命周期更長,類似於系統的“全局變量”。

5、out 對象

out 對象用於在Web瀏覽器內輸出信息,並且管理應用服務器上的輸出緩沖區。在使用 out 對象輸出數據時,可以對數據緩沖區進行操作,及時清除緩沖區中的殘余數據,為其他的輸出讓出緩沖空間。待數據輸出完畢后,要及時關閉輸出流。

6、pageContext 對象

pageContext 對象的作用是取得任何范圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。

7、config 對象

config 對象的主要作用是取得服務器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。 開發者可以在web.xml 文件中為應用程序環境中的Servlet程序和JSP頁面提供初始化參數。

8、page 對象

page 對象代表JSP本身,只有在JSP頁面內才是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變量,類似於Java編程中的 this 指針。

9、exception 對象

exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。excepation對象和Java的所有對象一樣,都具有系統提供的繼承結構。exception 對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 對象,並把 exception 對象傳送到在page指令中設定的錯誤頁面中,然后在錯誤頁面中處理相應的 exception 對象。

 

對象名 功能 類型 作用域
request 向客戶端請求數據 javax.servlet.ServletRequest Request
response 封裝了jsp產生的響應,然后被發送到客戶端以響應客戶的請求 javax.servlet.SrvletResponse Page
pageContext 為JSP頁面包裝頁面的上下文。管理對屬於JSP中特殊可見部分中己經命名對象的該問 javax.servlet.jsp.PageContext Page
session 用來保存每個用戶的信息,以便跟蹤每個用戶的操作狀態 javax.servlet.http.HttpSession Session
application 應用程序對象 javax.servlet.ServletContext Application
out 向客戶端輸出數據 javax.servlet.jsp.JspWriter Page
config 表示Servlet的配置,當一個Servlet初始化時,容器把某些信息通過此對象傳遞給這個Servlet javax.servlet.ServletConfig Page
page Jsp實現類的實例,它是jsp本身,通過這個可以對它進行訪問 javax.lang.Object Page
exception 反映運行的異常 javax.lang.Throwable Page

二,解析幾個內置對象

1)out對象對象,對象類型是JspWriter類,相當於帶緩存的PrintWriter(不帶緩存)

PrintWriter:write("內容")           直接向瀏覽器輸出內容

JspWriter:writer("內容")            向jsp緩沖區寫出內容

JspWriter當滿足以下條件時之一時,緩沖區的內容寫出:

a,緩沖區滿了

b,刷新緩沖區

c,關閉緩沖區

d,jsp頁面執行完畢

2)pageContext對象

pageContext的對象類型是PageContext,叫jsp的上下文對象.

pageContext作用:可以獲取其他八個內置對象

  1. //示例:  
  2. pageContext.getOut();  
  3. pageContext.getServletConfig()  

使用場景:在自定義標簽時會頻繁使用到PageContext對象;或者是定義一個方法需要用到多個對象時,傳一個pageContext對象就能解決問題.

三,JSP中四大域對象

分類:

  1. ServletContext     context域  
  2. HttpServletRequet  request域  
  3. HttpSession        session域     --前三種在學習Servlet時就能接觸到  
  4. PageContext        page域     --jsp學習的  

域對象的作用:保存數據,獲取數據,共享數據.

保存數據:

Context.setAttribute("內容");//默認保存到page域  

  1. pageContext.setAttribute("內容",域范圍常量);//保存到指定域中  
  2. //四個域常量  
  3. PageContext.PAGE_SCOPE  
  4. PageContext.REQUEST_SCOPE  
  5. PageContext..SESSION_SCOPE  
  6. PageContext.APPLICATION_SCOPE  

獲取數據:

  1. pageContext.getAttribute("內容");  

pageContext.getAttribute("name",域范圍常量);

//自動在四個域中搜索數據 pageContext.findAttribute("內容");//在四個域中自動搜索數據,順序:page域->request域->session域->application域(context域)

域作用范圍:

    1. page域:    只能在當前jsp頁面使用                (當前頁面)  
    2. request域: 只能在同一個請求中使用               (轉發)  
    3. session域: 只能在同一個會話(session對象)中使用  (私有的)  
    4. context域: 只能在同一個web應用中使用            (全局的)


免責聲明!

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



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