JSP 隱式對象
JSP隱式對象是JSP容器為每個頁面提供的Java對象,開發者可以直接使用它們而不用顯式聲明。JSP隱式對象也被稱為預定義變數。
JSP所支持的九大隱式對象:
對象 | 描述 |
---|---|
request | HttpServletRequest 介面的實例 |
response | HttpServletResponse 介面的實例 |
out | JspWriter類的實例,用於把結果輸出至網頁上 |
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 類。
其中一個重要的方法就是 removeAttribute(),它可接受一個或兩個參數。比如,pageContext.removeAttribute("attrName") 移除四個scope中相關屬性,但是下麵這種方法只移除特定 scope 中的相關屬性:
pageContext.removeAttribute("attrName", PAGE_SCOPE);
page 對象
這個對象就是頁面實例的引用。它可以被看做是整個JSP頁面的代表。
page 對象就是this對象的同義詞。
exception 對象
exception 對象包裝了從先前頁面中拋出的異常資訊。它通常被用來產生對出錯條件的適當回應。