JSP隱式物件是JSP容器為每個頁面提供的Java對象,開發者可以直接使用它們而不用明確聲明。 JSP隱式物件也被稱為預定義變數。
JSP所支援的九大隱式物件:
#物件 | 描述 |
---|
request | HttpServletRequest類別的實例 |
#
response | HttpServletResponse類別的實例 |
out | PrintWriter類別的實例,用來把結果輸出到網頁上 |
session | HttpSession類別的實例 |
#
application | ServletContext類別的實例,與應用上下文有關 |
config | ServletConfig類別的實例 |
#
pageContext | PageContext類別的實例,提供JSP頁面所有物件以及命名空間的存取 |
page |
類似於Java類別中的this關鍵字 |
Exception | Exception類別的對象,代表發生錯誤的JSP頁面中對應的例外物件 |
request物件
request物件是javax.servlet.http.HttpServletRequest 類別的實例。每當客戶端請求一個JSP頁面時,JSP引擎就會製造一個新的request物件來代表這個請求。
request物件提供了一系列方法來取得HTTP頭資訊,cookies,HTTP方法等等。
#
response物件
response物件是javax.servlet.http.HttpServletResponse類別的實例。當伺服器建立request物件時會同時建立用於回應這個客戶端的response物件。
response物件也定義了處理HTTP頭模組的介面。透過這個對象,開發者可以加入新的cookies,時間戳,HTTP狀態碼等等。
#
out物件
out物件是 javax.servlet.jsp.JspWriter 類別的實例,用來在response物件中寫入內容。
最初的JspWriter類別物件會根據頁面是否有快取來進行不同的實例化操作。可以在page指令中使用buffered='false'屬性來輕鬆關閉快取。
JspWriter類別包含了大部分java.io.PrintWriter類別中的方法。不過,JspWriter新增了一些專為處理快取而設計的方法。還有就是,JspWriter類別會拋出IOExceptions異常,而PrintWriter不會。
下表列出了我們將會用來輸出boolean,char,int,double,String,object等類型資料的重要方法:
##方法 | 描述 |
---|
#out.print(dataType dt) |
輸出Type類型的值 |
out.println(dataType dt) |
輸出Type類型的值然後換行 |
out.flush() |
刷新輸出流 |
#
session物件
session物件是 javax.servlet.http.HttpSession 類別的實例。和Java Servlets中的session物件有一樣的行為。
session物件用來追蹤在各個客戶端請求間的會話。
#
application物件
application物件直接包裝了servlet的ServletContext類別的對象,是javax.servlet.ServletContext 類別的實例。
這個物件在JSP頁面的整個生命週期中都代表著這個JSP頁面。這個物件在JSP頁面初始化時被創建,隨著jspDestroy()方法的呼叫而被移除。
透過在application中新增屬性,則所有組成您web應用的JSP檔案都能存取到這些屬性。
config物件
config物件是 javax.servlet.ServletConfig 類別的實例,直接包裝了servlet的ServletConfig類別的物件。
這個物件允許開發者存取Servlet或JSP引擎的初始化參數,例如檔案路徑等。
以下是config物件的使用方法,不是很重要,所以不常用:
config.getServletName();
它傳回包含在<servlet-name>元素中的servlet名字,注意,<servlet -name>元素在WEB-INF\web.xml 檔案中定義。
#
pageContext 物件
pageContext物件是javax.servlet.jsp.PageContext 類別的實例,用來代表整個JSP頁面。
這個物件主要用來存取頁面訊息,同時過濾掉大部分實作細節。
這個物件儲存了request物件和response物件的參考。 application對象,config對象,session對象,out對象可以透過存取這個對象的屬性來導出。
pageContext物件也包含了傳給JSP頁面的指令訊息,包括快取訊息,ErrorPage URL,頁面scope等。
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);
page 物件
這個物件就是頁面實例的參考。它可以被看做是整個JSP頁面的代表。
page 物件就是this物件的同義詞。
#
exception 物件
exception 物件包裝了從先前頁面中拋出的異常資訊。它通常被用來產生對出錯條件的適當反應。