jsp九大內置對象

JSP內置對象:我們在使用JSP進行頁面編程時可以直接使用而不需自己創建的一些Web容器已爲用戶創建好的JSP內置對象,它們由容器實現和管理,內置對象在JSp初始化時生成。
一、JSP2.0給出的9個內置對象:
1、request:javax.servlet.http.HttpServletRequest,表示客戶請求,作用域:request。
2、response:javax.servlet.http.HttpServletResponse,表示服務器迴應,作用域:page。
3、pageContext:javax.servlet.jsp.pageContext,表示JSP頁面,作用域:page。
4、session:javax.servlet.http.HttpSession,表示一次會話,作用域:session。
5、application:javax.servlet.servletContext,表示所有用戶共享信息,作用域:application。
6、out:javax.servlet.jsp.jspWriter,寫入頁面內容,作用域:page。
7、page:表示一個頁面的實例,作用域:page。
8、config:javax.servlet.servletConfig,表示配置文件信息,作用域:page。
二、4種屬性範圍
1、page範圍:一頁中有效,跳轉即無效。
2、request範圍:服務器跳轉有效,客戶端跳轉無效。
3、session範圍:跳轉有效,新開瀏覽器無效。
4、application範圍:所有用戶有效,重啓應用無效。
三、request對象:request對象不但可以用來設置和取得request範圍變量,還可以用來獲取客戶端請求參數、請求的來源、表頭、Cookies等。
1、request獲取客戶端請求參數方法

方法 返回值類型 方法說明
getParameter(String name) String 獲取參數名爲name的參數值
getParameterNames() Enumeration 獲取所有參數的名稱,可與上一個方法合用獲取所有參數的值
getParameterValues(String name) String[] 獲取參數名爲name的所有參數,比如參數是多個checkbox
getParameterMap() Map 獲取所有參數封裝的Map實例,通過Map實例的String[] get("id")方法返回對應參數名爲id的值數組

2、request的其他方法

方法 返回值類型 方法說明
getHeader(String name) String 獲取指定標題名稱爲name的標頭
getHeaderName() Enumeration 獲取所有的標頭名稱
getIntHeader(String name) int 獲取標題名稱爲name的標頭,內容以整數類型返回
getDateHeader(String name) long 獲取標題名稱爲name的標頭,內容以日期類型返回
getCookies() Cookie 獲取相關的Cookie
getContextPath() String 獲取Context的路徑
getMethod() String 獲取客戶端的提交方式
getProtocol() String 獲取使用的HTTP協議
getQueryString() String 獲取請求的字符串
getRequestSessionId() String 獲取客戶端的Session ID
getRequestURI() String 獲取請求的URI
getRemoteAddr() String 獲取客戶端IP地址

四、response對象:用來向客戶端傳送輸出信息。
方法 返回值 方法說明
addCookie(Cookie cookie) void
addDateHeader(String name,long date) void
addHeader(String name,String value) void
addIntHeader(String name,int value) void
setDateHeader(String name,long date) void
setHeader(String name,String value) void
setIntHeader(String name,int value) void
sendError(int sc) void 傳送狀態碼
sendError(int sc,String msg) void 傳送狀態碼和錯誤信息
setStatus(int sc) void 設置狀態碼
sendRedirect(String URL) void 頁面重定向,用來實現頁面跳轉

注:這裏的response對象的sendRedirect(String URL)方法設置頁面重定向將改變瀏覽器地址欄信息,所以也稱客戶端跳轉。

實例1:response對象實現頁面的自動刷新:只需要早JSP頁面中加上

<%--使用response對象的setIntHeader設置屬性Refresh的值(單位爲秒)來實現頁面自動刷新--%> <% response.addIntHeader("Refresh",10); %>

實例2:實現頁面自動跳轉:可以通過response對象的setHeader()方法添加一個標題爲Refresh的標頭,並制定頁面跳轉時間及跳轉頁面,從而實現頁面自動跳轉。 <% response.setHeader("Refresh","10;URL=http://www.baidu.com"); %>

這裏使用setHeader方法添加一個標題爲"Refresh",值爲"10,URL=http://www.baidu.com"的標頭。

五、out對象:用來向頁面輸出信息。
方法 返回值類型 方法說明
clear() void 清除網頁上輸出內容
clearBuffer() void 清除緩衝區內容
close() void 關閉緩衝區,清除所有內容
getBufferSize() int 取得緩衝區大小
getRemaining() int 取得緩衝區剩餘大小
isAutoFulsh() boolean 獲得緩衝區是否進行自動清除的信息
print(String str) void 進行頁面輸出
println(String str) void 進行頁面輸出並換行

六、session對象:用來表示用戶的會話狀況,一般用於保存用戶的各種信息,直到生命週期超時或者被認爲釋放掉爲止。
方法 返回值類型 方法說明
getId() String 獲取session的ID
getCreationTime() long 獲取session的生成時間
getLashAccessedTime() long 獲取用戶最後通過session發送請求時間
getMaxInactiveInterval() long 獲取session生命週期,如果超過這個時間則失效
invalidate() void 清空session內容
isNew() boolean 判斷session是否爲“新”的
setMaxInactiveInterval() void 設置session生命週期,如果超過這個時間則失效

七、application對象:用來取得和設置Servlet的相關信息。

方法 返回值類型 方法說明
getMajorVersion() int 獲取主要的Servlet API版本
getMinorVersion() int 獲取次要的Servlet API版本
getServerInfo() String 獲取服務器版本
getMimeType() String 獲取指定文件的MIME類型
getContext() ServerContext 獲取指定Local的Application context
getRealPath String 獲取指定path的絕對路徑

八、pageContext對象:可以用來設置page範圍的屬性,還可以設置其他範圍屬性,不過需要指定範圍參數,同時還可以獲取其他內置對象。
方法 返回值 方法說明
getException() Exception 獲取當前的exception內置對象
getOut() JspWriter
getPage() Object
getRequest() ServletRequset
getResponse() ServletResponse
getServletConfig() ServletConfig
getServeltContext() ServletContext
getSession() HttpSession
getAttribute(String name,int scope) Object 獲取指定範圍的name屬性值
getAttributeNamesInScope(int scope) Enumeration 獲取指定範圍所有屬性名稱
getAttributesScope(String name) int 獲取屬性名稱爲name的屬性範圍
removeAttribute(String name) void 移除屬性名稱爲name的 屬性
removeAttribute(String name,int scope) void 移除指定範圍的屬性名稱爲name的 屬性
setAttribute(String name,Object value,int scope) void 設置指定範圍的name屬性
findAttribute(String name) Object 尋找所有範圍的屬性名稱爲name的屬性

九、page對象:page對象代表JSP轉譯後的Servlet,通過page對象可以非常方便地調用Servlet類中定義的方法。

實例1:通過page對象調用Servlet類中定義的方法

<%@ page language="java" contentType="text/html;charset=gb2312"%> <%@ page info="this is the page Object Practice" %> <html> <head> <title>page對象</title> </head> <body> <%--通過page對象調用Servlet中的getServletInfo()方法 --%> <% String info = ((javax.servlet.jsp.HttpJspPage)page).getServletInfo(); %> <%=info %> </body> </html>

輸出:this is the page Object Practice.

十、config對象:可以用來獲取Servlet的配置信息。
方法 返回值類型 方法說明
getInitParameter(name) String 獲取Servlet初始化參數
getInitParameterNames() Enumeration 獲取Servlet所有初始化參數名稱
getServletContext() ServletContext 獲取當前Application context
getServletName() String 獲取Servlet名稱

十一、exception對象:用來處理錯誤異常,如果要用exception對象,必須指定page中的isErrorPage屬性值爲true。

實例:exception用來處理錯誤異常

1、包含錯誤的頁面:error.jsp

<%@ page language="java" contentType="text/html;charset=gb2312" errorPage="ExceptionDemo01.jsp"%> <html> <head> <title>錯誤頁面</title> </head> <body> <% int[] arr = {1,2,3}; out.println(arr[3]); %> </body> </html>

注:error.jsp中arr[3]數組下表越界.需在page指令中指定errorPage的屬性值爲相應的異常處理程序。

2、異常處理頁面:exceptionDo.jsp

<%@ page language="java" contentType="text/html;charset=gb2312" isErrorPage="true"%> <%@page import="java.io.PrintStream"%> <html> <head> <title>處理錯誤異常</title> </head> <body> <%=exception%><br> <%=exception.getMessage()%><br> <%=exception.getLocalizedMessage()%><br> <% exception.printStackTrace(new java.io.PrintWriter(out)); %> </body> </html>

注:必須在page指令中指定屬性isErrorPage屬性值爲true。也就是說這個頁面可以用於異常處理。
將會在exceptionDo.jsp中打印出error.jsp中的數組下標越界異常 信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章