JSP九大內置對象及其做用+四大域對象

一,什麼是內置對象?

在jsp開發中會頻繁使用到一些對象,如ServletContext HttpSession PageContext等.若是每次咱們在jsp頁面中須要使用這些對象都要本身親自動手建立就會特別的繁瑣.SUN公司所以在設計jsp時,在jsp頁面加載完畢以後自動幫開發者建立好了這些對象,開發者只須要使用相應的對象調用相應的方法便可.這些系統建立好的對象就叫作內置對象.html

在servlet程序中,若是開發者但願使用session對象,必須經過request.getSession()來獲得session對象;而在jsp程序中,開發中可直接使用session(系統幫咱們建立好的session對象的名字就叫session)調用相應的方法便可,如:session.getId().java

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

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

一、request對象

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

二、response對象

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

三、session對象

session 對象是由服務器自動建立的與用戶請求相關的對象。服務器爲每一個用戶都生成一個session對象,用於保存該用戶的信息,跟蹤用戶的操做狀態。session對象內部使用Map類來保存數據,所以保存數據的格式爲 「Key/value」。 session對象的value可使複雜的對象類型,而不只僅侷限於字符串類型。服務器

四、application對象

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

五、out 對象

out 對象用於在Web瀏覽器內輸出信息,而且管理應用服務器上的輸出緩衝區。在使用 out 對象輸出數據時,能夠對數據緩衝區進行操做,及時清除緩衝區中的殘餘數據,爲其餘的輸出讓出緩衝空間。待數據輸出完畢後,要及時關閉輸出流。app

六、pageContext 對象

pageContext 對象的做用是取得任何範圍的參數,經過它能夠獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的建立和初始化都是由容器來完成的,在JSP頁面中能夠直接使用 pageContext對象。jsp

七、config 對象

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

八、page 對象

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

九、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應用中使用            (全局的)

參考資料:累人猿博客jsp四大域對象

相關文章
相關標籤/搜索