JSP/Servlet Web 學習筆記 DayThree
JSP內置對象
使用JSP語法可以存取這些內置對象來執行JSP網頁的Servlet環境相互作用。內置對象其實是由特定的Java類所產生的。每一種內置對象都映射到一個特定的Java類或者端口,在服務器運行時根據情況自動生成。
下表列出了所有的JSP內置對象:
對象名 | 描述 | 作用域 | 分類 |
appliction | 顯示相應網頁是有應用程序的對象 | 整個應用程序執行期間 | 作用域通信對象:檢索JSP頁面的Servlet相關信息 |
session | 保存個人信息的個人所有對象 | 會話期間 | |
pageContext | 提供調用其它對象方法的對象 | 頁面執行期間 | |
out | 表示服務器端向客戶端打開的output數據流對象 | 頁面執行期間 | 輸入和輸出對象:控制頁面的輸入輸出 |
request | 包含客戶端請求信息的對象 | 用戶請求期間 | |
response | 包含從服務器端發送到客戶端的相應內容對象 | 頁面執行(響應)期間 | |
page | 顯示當前網頁的對象 | 頁面執行期間 | Servlet對象:提供有關頁面環境的信息 |
config | JSP頁面通過容器初始化接收到的對象 | 頁面執行期間 | |
exception | 發生錯誤時生成的異常對象 | 頁面執行期間 | 錯誤對象:處理頁面中的錯誤 |
1)作用域通信對象
作用範圍:pageContext<session<appliction
a)pageContext對象
提供訪問當前頁面作用域中定義的所有內置對象,常用方法如下:
/*以名稱/值的方式,將一個對象的值存放到pageContext中*/ void setAttribute(String name,Object Value) /*根據名稱去獲取pageConetxt中存放對象的值*/ void getAttribute(String name)
b)seesion對象
用於保存和跟蹤用戶的會話狀態,常用方法與pageContext相同。
c)application對象
作用於整個英語程序,所有的客戶端窗口都可以共享該對象,從服務器開始就存在,直到服務器關閉,常用方法於pageConext相同。
2)輸入輸出對象
a)request對象
客戶端請求,包含了所有請求信息,常用方法如下:
/*根據頁面表單組件名稱獲取請求頁面提交的數據*/ String getParameter(String name); /*獲取頁面請求中一個表單組件對應多個用戶請求數據(復選框等)*/ String getParameterValues(String name); /*獲取所有客戶端到服務器端的參數名*/ Enumeration getParameterNames();
b)response對象
處理JSP生成的響應,然後將響應結果發送給客戶端,常用方法如下:
/*設置作為相應生成內容的類型和字符編碼*/ void setContentType(String name); /*發送一個相應給瀏覽器,指示其應請求另一個url(重定向到另一個url,會丟失數據,跳轉後不再執行sendRedirect方法下面的代碼)*/ void sendRedirect(String name); /*返回到客戶端的輸出流對象*/ getOutputStream();
c)out對象
表示輸出流,此輸出流將作為請求的相應發送到客戶端,常用方法:print()、println()、write()。
out在程序代碼中幾乎不用,因為JSP表達式會自動地放入輸出流中,而無需再明確指向out輸出。
3)Servlet對象
a)page對象
提供對網頁上定義的所有對象的訪問,表示頁面本身,相當於Java中的this關鍵字。
b)config對象
config對象存儲Servlet的一些初始信息。config對象表示編譯JSP頁面的Servlet初始化數據的配置。
4)錯誤對象exception
處理JSP頁面中的錯誤,只有在錯誤頁面(在頁面指令包含isErrorPage="true"的頁面)才可以使用。
在出錯頁面,使用<%=exception.getMessage()%>來獲取錯誤信息。
JSP的異常處理
如果在執行JSP的Java代碼時發生異常,可以通過下面的指令將HTTP請求轉發給另一個專門處理的網頁:
<%@ page errorPage="errorpage.jsp"%>
並且在處理異常的網頁中,應該將下面語句:
<%@ page isErrorPage="true"%>也聲明進去。
在處理異常的網頁中可以直接訪問exception隱含對象,獲取詳細的異常消息。
JSP/Servlet Web 學習筆記 DayThree