以下內容引用自http://wiki.jikexueyuan.com/project/jsp/implicit-objects.html:
JSP隱式對象是Java對象,JSP容器使隱式對象在每一個頁面中對開發人員是可用的,開發人員可以直接調用它們而不用顯式聲明。JSP隱式對象也稱為預定義的變量。
JSP支持九個隱式對象,如下所示:
對象 | 描述 |
---|---|
request | 這是與請求關聯的HttpServletRequest 對象。 |
response | 這是與客戶端響應關聯的HttpServletResponse對象。 |
out | 這是用於向客戶端發送輸出的PrintWriter對象。 |
session | 這是與請求關聯的HttpSession對象。 |
application | 這是與應用程序上下文關聯的ServletContext對象。 |
config | 這是與頁面關聯的ServletConfig 對象。 |
pageContext | 這個封裝特使用特定服務器的特性,如更高的性能jspwriter。 |
page | 這是this的一個簡單的同義詞,是用來調用由轉換的Servlet類定義的方法。 |
Exception | Exception對象允許指定的JSP訪問異常數據。 |
一、request對象
request對象是javax.servlet.http.HttpServletRequest對象的一個實例。每次客戶端請求一個頁面時,JSP引擎都會創建一個新的對象來表示那個請求。
request對象提供方法來獲取HTTP頭信息,包括表單數據,cookies,HTTP方法等。
二、response對象
response對象是javax.servlet.http.HttpServletResponse對象的一個實例。當服務器創建request對象時,它也創建了代表客戶端響應的對象。
response對象還定義了接口,可以處理創建的新的HTTP 頭。通過這個對象JSP程序員可以添加新的cookies或日期stamps,HTTP狀態碼等。
三、out對象
out隱式對象是javax.servlet.jsp. JspWriter對象的一個實例,用於在響應中發送內容。
最初的JspWriter對象被實例化不同程度地取決於頁面是否緩沖。通過使用頁面指令的buffered='false'屬性,緩沖可以很容易地關掉。
JspWriter對象包含大部分與java.io.PrintWriter類相同的方法。然而,JspWriter對象有一些額外的方法用來處理緩沖。與PrintWriter對象不同,JspWriter拋出IOException。
以下是用來寫布爾型char,int,double,object,String等等的重要方法。
方法 | 描述 |
---|---|
out.print(dataType dt) | 輸出一個數據類型的值 |
out.println(dataType dt) | 輸出數據類型值然后用新行字符終止該行。 |
out.flush() | 刷新數據流。 |
四、session對象
session對象是javax.servlet.http.HttpSession的一個實例,且行為與Java Servlet中的session對象完全相同。
session對象是用來跟蹤客戶端請求之間的客戶端會話。
五、application對象
application對象是用於生成的Servlet的ServletContext對象的直接包裝器,且實際上是javax.servlet.ServletContext對象的一個實例。
這個對象是JSP頁面整個生命周期的一個代表。當初始化JSP頁面時,這個對象被創建,當JSP頁面由jspDestroy()方法刪除時,該對象也會被刪除。
通過為application添加屬性,可以確保生成web應用程序的所有JSP文件可以訪問它。
六、config對象
config對象是javax.servlet.ServletConfig的一個實例,且是用於生成的servlet的ServletConfig對象的直接包裝器。
該對象允許JSP程序員訪問Servlet或JSP引擎初始化參數,如路徑或文件位置等。
下面的config方法是唯一一個可能曾經使用的方法,且它的使用很簡單:
config.getServletName();
這返回servlet的名稱,該名稱是包含在定義在web-inf\web.xml文件中<servlet-name>元素中的字符串。
七、pageContext對象
pageContext對象是javax.servlet.jsp.PageContext對象的一個實例。pageContext對象用於表示整個JSP頁面。
這個對象是作為一種手段來訪問頁面信息的,同時避免了大部分的實現細節。
這個對象為每個請求存儲了請求引用和響應對象。application,config,session,out對象是通過訪問該對象的屬性派生出來的。
pageContext對象還包含發布到JSP頁面的指令信息,包括緩沖信息,errorPageURL,頁面范圍。
pageContext類定義了幾個領域,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE,和APPLICATION_SCOPE,它確定了這四個范圍。它還支持40多個方法,大約一半的方法是繼承了javax.servlet.jsp.JspContext類的。
重要方法之一是removeAttribute,該方法接受一個或兩個參數。例如,pageContext.removeAttribute(“attrName”) 從全部范圍中刪除屬性,而下面的代碼僅從頁面范圍中刪除它:
pageContext.removeAttribute("attrName", PAGE_SCOPE);
八、page對象
這個對象是一個頁面實例的真實引用。它可以被認為是一個對象,代表了整個JSP頁面。
page對象實際上是this對象的一個直接的同義詞。
九、exception對象
exception對象是一個包裝器,包含來自先前頁面的異常拋出。它通常用於為錯誤條件生成一個適當的響應。