好程式設計師Java學習路線JSP物件

好程式設計師IT發表於2019-08-08

   .隱含物件

  JSP隱式物件是JSP容器為每個頁面提供的Java物件,開發者可以直接使用它們而不用顯式宣告。JSP隱式物件也被稱為預定義變數。
JSP支援九個自動定義的變數,被稱為隱含物件。這九個隱含物件的簡介見下表:

  

   1.物件

  request物件是javax.servlet.http.HttpServletRequest 類的例項。每當客戶端請求一個JSP頁面時,JSP引擎就會製造一個新的request物件來代表這個請求。
request物件提供了一系列方法來獲取HTTP頭資訊,cookies,HTTP方法等等。

  request 物件是 javax.servlet.httpServletRequest型別的物件。 該物件代表了客戶端的請求資訊,主要用於接受透過HTTP協議傳送到伺服器的資料。(包括頭資訊、系統資訊、請求方式以及請求引數等)。request物件的作用域為一次請求。

   2.物件

  response物件是javax.servlet.http.HttpServletResponse類的例項。當伺服器建立request物件時會同時建立用於響應這個客戶端的response物件。
response物件也定義了處理HTTP頭模組的介面。透過這個物件,開發者們可以新增新的cookies,時間戳,HTTP狀態碼等等。

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

   3.物件

  out物件是 javax.servlet.jsp.JspWriter 類的例項,用來在response物件中寫入內容。
最初的 JspWriter類物件根據頁面是否有快取來進行不同的例項化操作。可以在page指令中使用buffered='false'屬性來輕鬆關閉快取。
JspWriter類包含了大部分java.io.PrintWriter類中的方法。不過,JspWriter新增了一些專為處理快取而設計的方法。還有就是,JspWriter類會丟擲IOExceptions異常,而PrintWriter不會。

  out 物件用於在Web瀏覽器內輸出資訊,並且管理應用伺服器上的輸出緩衝區。在使用 out 物件輸出資料時,可以對資料緩衝區進行操作,及時清除緩衝區中的殘餘資料,為其他的輸出讓出緩衝空間。待資料輸出完畢後,要及時關閉輸出流。

   下表列出了我們將會用來輸出 boolean,char,int,double,String,object等型別資料的重要方法:

   4.物件

  session物件是 javax.servlet.http.HttpSession 類的例項。和Java Servlets中的session物件有一樣的行為。
session物件用來跟蹤在各個客戶端請求間的會話。

  session 物件是由伺服器自動建立的與使用者請求相關的物件。伺服器為每個使用者都生成一個session物件,用於儲存該使用者的資訊,跟蹤使用者的操作狀態。session物件內部使用Map類來儲存資料,因此儲存資料的格式為 “Key/value”。 session物件的value可以使複雜的物件型別,而不僅僅侷限於字串型別。

   5.物件

  application物件直接包裝了servlet的ServletContext類的物件,是javax.servlet.ServletContext 類的例項。
這個物件在 JSP頁面的整個生命週期中都代表著這個JSP頁面。這個物件在JSP頁面初始化時被建立,隨著jspDestroy()方法的呼叫而被移除。
透過向 application中新增屬性,則所有組成您web應用的JSP檔案都能訪問到這些屬性。

  application 物件可將資訊儲存在伺服器中,直到伺服器關閉,否則application物件中儲存的資訊會在整個應用中都有效。與session物件相比,application物件生命週期更長,類似於系統的“全域性變數”。

   6.物件

  config物件是 javax.servlet.ServletConfig 類的例項,直接包裝了servlet的ServletConfig類的物件。

  config 物件的主要作用是取得伺服器的配置資訊。透過 pageConext物件的 getServletConfig() 方法可以獲取一個config物件。當一個Servlet 初始化時,容器把某些資訊透過 config物件傳遞給這個 Servlet。 開發者可以在web.xml 檔案中為應用程式環境中的Servlet程式和JSP頁面提供初始化引數。

   這個物件允許開發者訪問 Servlet或者JSP引擎的初始化引數,比如檔案路徑等。
以下是 config物件的使用方法,不是很重要,所以不常用:

   config.getServletName();

   它返回包含在元素中的 servlet名字,注意,元素在 WEB-INF\web.xml 檔案中定義。

   7.物件

  pageContext物件是javax.servlet.jsp.PageContext 類的例項,用來代表整個JSP頁面。
這個物件主要用來訪問頁面資訊,同時過濾掉大部分實現細節。

   這個物件儲存了 request物件和response物件的引用。application物件,config物件,session物件,out物件可以透過訪問這個物件的屬性來匯出。

  pageContext物件也包含了傳給JSP頁面的指令資訊,包括快取資訊,ErrorPage URL,頁面scope等。

  pageContext 物件的作用是取得任何範圍的引數,透過它可以獲取 JSP頁面的out、request、reponse、session、application 等物件。pageContext物件的建立和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext物件。

  PageContext類定義了一些欄位,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40餘種方法,有一半繼承自javax.servlet.jsp.JspContext 類。
其中一個重要的方法就是 removeArribute(),它可接受一個或兩個引數。比如,pageContext.removeArribute("attrName")移除四個scope中相關屬性,但是下面這種方法只移除特定scope中的相關屬性:
pageContext.removeAttribute("attrName", PAGE_SCOPE);

   表示 JSP上下文,可以透過這個例項,取得request\response\session<jsp:forward>等。
(1)pageContext.forward(String);
(2)pageContext.include(String);
(3)pageContext.getServletConfig();
(4)pageContext.getServletContext();
(5)pageContext.getRequest();
(6)pageContext.geResponse();
(7)pageContext.getSession();
也就是說,只要有了 pageContext物件,就能完成一切內建物件的功能;
補充: pageConext設定任意範圍的屬性(很少使用)

   使用函式: pageConext.setAttribute("name","value",int SCOPE);
1.設定page範圍
pageConext.setAttribute("name","xiazdong",PageConext.PAGE_SCOPE);
2.設定request範圍
pageConext.setAttribute("name","xiazdong",PageConext.REQUEST_SCOPE);
3.設定session範圍
pageConext.setAttribute("name","xiazdong",PageConext.SESSION_SCOPE);
4.設定application範圍
pageConext.setAttribute("name","xiazdong",PageConext.APPLICATION_SCOPE);
因此,只需要 PageContext就能完成全部內建物件的操作;

   8物件

   這個物件就是頁面例項的引用。它可以被看做是整個 JSP頁面的代表。
page 物件就是this物件的同義詞。

  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 物件。

   二、的 4種屬性範圍

  (1)page範圍(pageContext):一頁中有效,跳轉即無效。
(2)request範圍:伺服器跳轉有效,客戶端跳轉無效。
(3)session範圍:跳轉有效,新開瀏覽器無效。
(4)application範圍:所有使用者有效,重啟伺服器無效。

   這四個物件有 3個方法:

  (1) void setAttribute(String key,Object o); //設定屬性
(2) Object getAttribute(String key); //取得後要向下轉型。
(3) void removeAttribute(String key); //刪除屬性
注意:在 getAttribute之後一定要轉型!
舉例:

   pageContext.setAttribute("name","xiazdong");   //只能在單個頁面中進行儲存

   String name = (String)pageContext.getAttribute("name");//換了一個頁面後就無法取得

   ```注意:儘可能在滿足功能的前提下,將屬性設定的儲存範圍儘可能的小。這樣能夠提高效能;

   ## 三.全域性錯誤處理         

   對頁出現的相同的錯誤或異常不用在每個頁面的指令頭都追加 errorPage="錯誤頁面";指令,可以在xml中配置全域性錯誤處理.(必須寫在xml檔案的 <web-app></web-app>標籤對中)

   <error-code>404</error-code>

   <location>/404Error.jsp</location>

  //用於處理404錯誤的全域性配置.所有404錯誤都會轉到404Error.jsp頁面中.

java.lang.ArithmeticException
/ArithmeticException.jsp

  //用於處理算術異常的全域性配置.所有算術異常都會轉到rithmeticException.jsp頁面中.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2653057/,如需轉載,請註明出處,否則將追究法律責任。

相關文章