程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 來認識一下JSP的九大內置對象

來認識一下JSP的九大內置對象

編輯:JAVA編程入門知識

雖然現在基本上我們都是使用SpringMVC+AJAX進行開發了Java Web了,但是還是很有必要了解一下JSP的九大內置對象的。像request、response、session這些對象,即便使用其他框架也是會經常用到的。因此十分有了解的必要。

這些對象可以在JSP頁面中調用,而不需要事先定義,這使得JSP編程更加的方便和快捷。其實這些內置對象都對應著某個Servlet類,在JSP被翻譯成Servlet之後,這些內置對象會相應轉換成對應的類實例。

 

內置對象特點:

1. 由JSP規范提供,不用編寫者實例化。

2. 通過Web容器實現和管理。

3. 所有JSP頁面均可使用。

4. 只有在腳本元素的表達式或代碼段中才可使用(<%=使用內置對象%>或<%使用內置對象%>)。

常用內置對象:

1. 輸出輸入對象:request對象、response對象、out對象。

2. 通信控制對象:pageContext對象、session對象、application對象。

3. Servlet對象:page對象、config對象。

4. 錯誤處理對象:exception對象。

 

1、request對象javax.servlet.http.HttpServletRequest

request內置對象是最常用的對象之一,它代表的是java.servlet.HttpServletRequest類的對象。request內置對象中包含了有關浏覽器請求的信息,並提供了多個用於獲取cookie、header以及session內數據的方法。

//requeset對象是從客戶端向服務器發出的請求,可以通過這個對象了解客戶端信息。

isUserInRole(String role) :判斷認證後的用戶是否屬於邏輯的role中的成員。

getAttribute(String name) :返回由name指定的屬性值。若不存在則為空。

getAttributes():返回request對象的所有屬性的名字集合,其結果是一個枚舉的實例。

getCookies() :返回客戶端的所有Cookie對象,結果是一個Cookie數組。

getCharacterEncoding(): 返回請求中的字符編碼方式。

getContentLength() :返回請求的Body的長度,如果不確定長度,返回-1。

getHeader(String name): 獲得HTTP協議定義的文件頭信息。

getHeaders(String name): 返回指定名字的request Header的所有值,其結果是一個枚舉的。

getHeaderNames():返回所有request Header的名字 ,其結果是一個枚舉實例。

getInputStream() :返回請求的輸入流,用於獲得請求中的數據

getMethod():獲得客戶端向服務器端傳送數據的方法,如GET,POST,HEADER,TRACE等。

getParameter(String name):獲得客戶端傳送給服務器端的參數值。

getParameterNames(): 獲得客戶端傳送給服務器端的所有參數名字,其結果是一個枚舉的實例。

getParameterValues(String name): 獲得指定參數的所有值。

getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱。

getQueryString():獲得查詢字符串,該字符串是由客戶端以GET方式向服務器端傳送的。

getRequestURI():獲取發出請求字符串的客戶端地址。

getRemoteAddr():獲取客戶端IP地址。

getRemoteHost():獲取客戶端名字 。

getSession([Boolean create]):返回和請求相關的session。create參數是可選的。當有參數create且這個參數值為true時,如果客戶端還沒有創建session,那麼將創建一個新的session。

getServerName():獲取服務器的名字。

getServletPath():獲取客戶端所請求的腳本文件的文件路徑。

getServerPort():獲取服務器的端口號。

removeAttribute(String name):刪除請求中的一個屬性。

setAttribute(String name, java.lang.Object obj):設置request的參數值。

 

2、response對象 javax.servlet.http.HttpServletResponse


response對象和request對象的性質相反,它所包含的是服務器向客戶端做出的應答信息.實現過程中response被包裝成HttpServletResponse接口,它包含裝了JSP產生的響應,然後被發送到客戶端以響應客戶端的請求。

addCookie(Cookie cook):添加一個Cookie對象,用來保存客戶端的用戶信息。

addHeader(String name,String value):添加HTTP文件頭信息。該Header信息將傳達到客戶端,如果已經存在同名的則會覆蓋。

containsHeader(String name):判斷指定字句的Header是否已經存在,返回真假。

encodeURL():使用sessionId封裝URL。如果沒有封裝URL則返回原值。

flushBuffer():強制把當前緩沖區的內容發送到客戶端。

getBufferSize():返回緩沖區的大小。

getOutputStream():返回到客戶端的輸出流。

sendError(int):向客戶端發送錯誤信息。如404 指網頁不存在 。

sendRedirect(String location):把響應發送到另一個位置 進行處理 即請求重定向。

setContent(String contentType):設置響應的MIME類型。

getWriter():此方法返回一個PrintWriter對象。

getCharacterEncoding():該方法獲得此時相應所采用的字符編碼類型。

setDateHeader(String name,heaername,long date):把指定的頭名稱以及日期設置為響應頭信息 其值是從新紀元算起的毫秒數。

setHeader(String name,String value):設置指定名字的HTTP文件頭的值,若存在則會覆蓋。

 

3、session對象 javax.servlet.http.HttpSession

Session對象是一個JSP內置對象,它在第一個JSP頁面被裝載時自動創建,完成會話期管理。從一個客戶打開浏覽器並連接到服務器開始,到客戶關閉浏覽器離開這個服務器結束,被稱為一個會話。當一個客戶訪問一個服務器時,可能會在這個服務器的幾個頁面之間切換,服務器應當通過某種辦法知道這是一個客戶,就需要Session對象。

當一個客戶首次訪問服務器上的一個JSP頁面時,JSP引擎產生一個Session對象,同時分配一個String類型的ID號,JSP引擎同時將這換個ID號發送到客戶端,存放在Cookie中,這樣Session對象,直到客戶關閉浏覽器後,服務器端該客戶的Session對象才取消,並且和客戶的會話對應關系消失。當客戶重新打開浏覽器再連接到該服務器時,服務器為該客戶再創建一個新的Session對象。

session 對象是由服務器自動創建的與用戶請求相關的對象。服務器為每個用戶都生成一個session對象,用於保存該用戶的信息,跟蹤用戶的操作狀態。

session對象內部使用Map類來保存數據,因此保存數據的格式為 “Key/value”。 session對象的value可以使復雜的對象類型,而不僅僅局限於字符串類型。

getAttribute():獲取與指定名字相聯系的屬性。

getAttributeNames():session對象中存儲的每一個對象,其結果為一個枚舉的實例。

getCreateTime():返回session的創建時間,最小單位這千分之一秒。

getId():返回唯一的標識,每個session的ID是不同的。

getLastAccessedTime():返回和當前session對象相關的客戶端最後發送的請求時間。

setMaxInactiveInterval(int number):該方法設定保存session數據的時間,參數number為秒數。

getMaxInactiveInterval():返回決時間,負值表示session永遠不會過期。它的值為session的生存時間。

invalidate():銷毀這個對像。

isNew():如果客戶端不接受使用session,那麼每個請求中都會產生一個session對象。

removeAttribute(String name):刪除與指定名字相聯系的屬性。

setAttribute(String name,java.langObject obj):設置指定名字的屬性值 並將 其存儲在session中。

 

4、application對象javax.servlet.ServletContext

 

application 對象可將信息保存在服務器中,直到服務器關閉,否則application對象中保存的信息會在整個應用中都有效。與session對象相比,application對象生命周期更長,類似於系統的“全局變量”。

服務器啟動後就產生了這個Application對象,當客戶再所訪問的網站的各個頁面之間浏覽時,這個Application對象都是同一個,直到服務器關閉。但是與Session對象不同的時,所有客戶的Application對象都時同一個,即所有客戶共享這個內置的Application對象。

 getAttribute(String name):返回指定名字的application對象的屬性的值。

getAttributeNames():返回所有應用程序級對象的屬性的名字 ,其結果為枚舉的實例。

getInitParameter(String name):返回由指定名字的application對象的某個屬性的初始值。

getServletInfo():返回Servlet編譯器的當前版本的信息。

setAttribute(String name,Object obj):設置 指定名字的application對象的屬性的值 。

removeAttribute(string Key):通過關鍵字來刪除一個對象的信息。

getRealPath(String path):返回虛擬路徑的真實路徑。

getContext(String URLPath):返回執行Web應用的application對象。

getMajorVersion():返回服務器支持的Servlet API最大版本號。

getMinorVersion():返回服務器支持的Servlet API最小版本號。

getMimeType(String file):返回指定文件的MIME類型。

getResource(String path):返回指定資源的輸入流。

getResourceDispathcher(String URLPath):返回指定資源的RequestDispathcher。

getServlet(String name):返回 指定名稱的servlet。

getServlets():返回所有的Servlet,返回類型為枚舉型。

getServletNames():返回所有的Servlet名稱,返回類型為枚舉型。

log(String msg):把指定信息寫入到Servlet的日志文件中。

log(String msg,Throwable throwable):把軌跡以及給出的Throwable異常說明信息寫入Servlet的日志文件。

 

5、out 對象javax.servlet.jsp.jspWriter

 

out 對象用於在Web浏覽器內輸出信息,並且管理應用服務器上的輸出緩沖區。在使用 out 對象輸出數據時,可以對數據緩沖區進行操作,及時清除緩沖區中的殘余數據,為其他的輸出讓出緩沖空間。待數據輸出完畢後,要及時關閉輸出流。

Out對象時一個輸出流,用來向客戶端輸出數據。Out對象用於各種數據的輸出。

 out.print()://輸出數據。

out.newLine()://輸出一個換行符。

out.flush()://輸出緩沖區裡的數據。

out.close()://關閉輸出流。

out.clearBuffer()://清除緩沖區裡的數據,並把數據輸出到客戶端。

out.clear()://清除緩沖區裡的數據,但不會把數據輸出到客戶端。

out.getBufferSize()://獲得緩沖區大小。

out.getRemaining()://獲得緩沖區中沒有被占用的空間大小。

out.isAutoFlush()://返回布爾值。如果AutoFlush為真 則返回真。

 

6、pageContext 對象javax.servlet.jsp.PageContext

 

pageContext 對象的作用是取得任何范圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。

pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。

page 對象代表JSP本身,只有在JSP頁面內才是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變量,類似於Java編程中的 this 指針。

 forward(String UriPath):重定向。

getAttribute(String name,[int scope] ): scope可選。用來檢索一個特定的已經 命名的對象的范圍,並且還可以通過調用 getAttributeNamesInScope()方法 ,檢索對鞭個特定范圍的每個屬性String字符串名稱的枚舉。

getException():返回當前的exception對象。

getRequest():返回當前的request對象。

getResponse():返回當前的response對象。

getServletConfig():返回當前頁面的ServletConfig對象。

getServletContext():返回ServletContext對象。這個對象對所有頁面都是共享的。

getSession():返回當前的session對象。

findAttribute():可以用來按照頁面,請求,會話以及應用程序范圍順序實現對某個已經命名的屬性的搜索。

setAttribute():可以用來設置默認頁面范圍或特定范圍之中的已命名對象。removeAttribute()可以用來刪除默認范圍或特定范圍內的已命名對象。

 

7、config 對象javax.servlet.ServletConfig

config 對象的主要作用是取得服務器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。開發者可以在web.xml 文件中為應用程序環境中的Servlet程序和JSP頁面提供初始化參數。

 getServletContext():返回執行者的Servlet上下文。

getServletName():返回Servlet的名字。

getInitParameter(String name):返回名字為name的初始參數的值。

getInitParameterNames():返回這個JSP的所有的初始參數的名字。

 

8 page對象 java.lang.Object

page對象有點類似於Java編程中的this指針,就是指當前JSP頁面本身。page是java.lang.Object類的對象。

page.getClass()://獲得page對象的類。

page.hashCode()://獲得page對象的hash碼。

page.toString()://將此page對象轉換為String類對象。

page.notify()://喚醒一個等待的進程。

page.notifyAll()://喚醒所有等待的進程。

page.wait()://使一個線程處於等待直到被喚醒。

page.wait(long timeout)://使一個線程處於等待直到timeout或被喚醒。

 

9、exception 對象java.lang.Throwable

exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。

excepation對象和Java的所有對象一樣,都具有系統提供的繼承 結構。

exception 對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 對象,並把 exception 對象傳送到在page指令中設定的錯誤頁面中,然後在錯誤頁面中處理相應的 exception 對象。

exception對象只有在錯誤頁面(在頁面指令裡有isErrorPage=true的頁面)才可以使用。

getMessage()://獲取異常消息字符串。
getLocalizeMessage()://獲取本地化語言的異常錯誤。
printStackTrace()://顯示異常的棧跟蹤軌跡。
toString()://返回關於異常錯誤的簡單消息描述。
fillInStackTrace()://重寫異常錯誤的棧執行軌跡。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved