JSP九大內建對象與Servlet學習筆記__JSP

來源:互聯網
上載者:User

我們常說的JSP有九大內建對象分別為:request、response、session、out、pagecontext、page、exception、application、config。

我們知道,JVM只能識別java類,並不能識別JSP代碼,那麼這些對象是如何產生的的呢。這就要提到Servlet。Servlet就是用Java編寫的伺服器端程式。狹義的Servlet是指Java語言實現的一個介面,廣義的Servlet是指任何實現了這個Servlet介面的類。

JSP的本質就是Servlet,Servlet是JSP的前身,JSP是Servlet的擴充;當JSP第一次被訪問時,Web容器將JSP代碼編譯成JVM能夠識別的Java類,JSP經編譯後就變成了Servlet。(JSP與Servlet聯絡)

JSP中的內建對象都是通過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象得到。

JSP是HTML中內嵌Java代碼,側重頁面顯示;而Servlet是HTML代碼與Java代碼分開,側重邏輯控制。(JSP與Servlet區別) 1、request對象(轉譯後對應javax.servlet.http.HttpServletRequest對象)

request對象代表了用戶端的請求資訊,主要用於接受通過HTTP協議傳送到伺服器的資料(包括頭資訊、系統資訊、請求方式以及請求參數等)。

request對象的生命週期:一次請求。

request對象的範圍:JSP頁面內有效。

request常用的方法: 

1 object getAttribute(String name)           ----返回指定屬性的屬性值
2 Enumeration getAttributeNames()         ----返回所有可用屬性名稱的枚舉
3 String getCharacterEncoding()             ----返回字元編碼方式
4 int getContentLength()                          ----返回請求體的長度(以位元組數)
5 String getContentType()                        ----得到請求體的MIME類型(多用途互連網郵件擴充類型)
6 ServletInputStream getInputStream()     ----得到請求體中一行的二進位流
7 String getParameter(String name)         ----返回name指定參數的參數值
8 Enumeration getParameterNames()      ----返回可用參數名的枚舉
9 String[] getParameterValues(String name) 返回包含參數name的所有值的數組
10 String getProtocol()                             ----返回請求用的協議類型及版本號碼
11 String getScheme()                             ----返回請求用的計劃名,如:http.https及ftp等
12 String getServerName()                       ----返回接受請求的伺服器主機名稱
13 int getServerPort()                               ----返回伺服器接受此請求所用的連接埠號碼
14 BufferedReader getReader()              ----返回解碼過了的請求體
15 String getRemoteAddr()                       ----返回傳送此請求的用戶端IP地址
16 String getRemoteHost()                       ----返回傳送此請求的用戶端主機名稱
17 void setAttribute(String key,Object obj)---設定屬性的屬性值
18 StringgetRealPath(String path)            ----返回一虛擬路徑的真實路徑
19 String request.getContextPath()          ----返回上下文路徑


2、response對象 (轉譯後對應javax.servlet.http.HttpServletResponse對象)

response對象表示伺服器端對用戶端的回應。主要用於設定頭資訊、跳轉、Cookie等。

response的生命週期:一次響應。

response的範圍:只在JSP頁面內有效。

response常用方法:

public void  setHeader(java.lang.String  name, java.lang.String  value)     ----設定頭資訊的名字和內容
public void sendRedirect(java.lang.String location) throws java.io.IOException  ----跳轉,由一個頁面跳往另外一個頁面
public void addCookie(Cookie  cookie)                                                               ----向用戶端加入cookie
public void setContentType(java.lang.String type)    ----設定內容的傳回型別

在瞭解了request與response的用法後,有一個重要的問題需要清楚,請求轉移與請求重新導向的區別:

請求重新導向:response.sendRedirect(), 用戶端行為,從本質上講等同於兩次請求,前一次的請求對象不會保持,地址欄的URL地址會改變。

請求轉寄:request.getRequsetDispatcher().forward(requset,response);伺服器行為,是一次請求,轉寄後請求對象會儲存,地址欄的URL地址不會改變。(伺服器內部轉寄,所有用戶端看不到地址欄的改變)。 3、session對象 (轉譯後對應javax.servlet.http.HttpSession對象)

session對象用於儲存特定的使用者會話所需的資訊 。

session對象生命週期:從存入資料時開始,預設閑置30分鐘後失效。

session對象範圍:會話內有效。(從一個客戶開啟瀏覽器並串連到伺服器開始,到客戶關閉瀏覽器離開這個伺服器結束,被稱為一個會話;因為http是無狀態的,Session需要使用Cookie作為識別標誌。該Cookie為伺服器自動產生的,它的maxAge屬性一般為-1,表示僅當前瀏覽器內有效,並且各瀏覽器視窗間不共用,關閉瀏覽器就會失效。)

session常用方法:

public String getId()                                     ----擷取Session對象編號。
public void setAttribute(String key,Object obj)----將參數Object指定的對象obj添加到Session對象中,並為添加的對象指定一個索引關鍵字。
public Object getAttribute(String key)             ----擷取Session對象中含有關鍵字的對象。
public Boolean isNew()                                   ----判斷是否是一個新session

4、application對象(轉譯後對應javax.servlet.ServletContext對象)

application對象用於儲存和訪問來自任何頁面的變數,類似於 session 對象。不同之處在於,所有的使用者分享一個 Application 對象,類似於“全域變數”,而 session 對象和使用者的關係是一一對應的。

application對象生命週期:伺服器啟動發送第一個請求時就產生了Application對象,直到伺服器關閉。

application對象常用方法:

setAttribute(String key,Object obj)   ----將參數Object指定的對象obj添加到Application對象中,並為添加的對象指定一個索引關鍵字。
getAttribute(String key)                    ----擷取Application對象中含有字的對象。
5、out 對象(轉譯後對應javax.servlet.jsp.jspWriter對象)

out 對象用於在Web瀏覽器內輸出資訊,並且管理應用伺服器上的輸出緩衝區。(注意要及時關閉輸出資料流)

其主要方法如下:

clear()            ----清除緩衝區中的資料,若緩衝區已經是空的,則會產生IOException異常;
clearBuffer()   ----清除緩衝區的資料,若緩衝區為空白,不會產生IO異常;
flush()             -----直接將目前暫存於緩衝區的資料輸出;
getBufferSize()----返回緩衝區的大小;
getRemaining()----返回緩衝區的剩餘空間大小;
isAutoFlush()   ----返回布爾值表示是否自動輸出緩衝區的資料;
輸出資料的一些方法:
newLine()                   ----輸出換行;
print(datatype data)   ----輸出不同資料類型的資料;
println(datatype data) ----輸出不同資料類型的資料,並自動換行;

6、pageContext 對象(轉譯後對應javax.servlet.jsp.PageContext對象)

pageContext對象能夠存取其他隱含對象,如request、reponse、session、application 等對象。(實際上,pageContext對象提供了對JSP頁面所有的對象及命名空間的訪問。)

pageContex常用方法:

void setAttribute(String name, Object value, int scope)----pageContext對象存取其他隱含對象屬性的方法,此時需要指定範圍的參數:範圍參數有四個,分別代表四種範圍:PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE

pageContext對象取得其他隱含對象的方法:

Exception getException( )               ----回傳網頁的異常
JspWriter getOut( )                        ----回傳網頁的輸出資料流
Object getPage( )                           ----回傳網頁的Servlet 實體
ServletRequest getRequest( )          ----回傳網頁的請求
ServletResponse getResponse( )      ----回傳網頁的響應
ServletConfig getServletConfig( )      ----回傳此網頁的ServletConfig 對象
ServletContext getServletContext( ) ----回傳此網頁的執行環境
HttpSession getSession( )               ----回傳和網頁有聯絡的會話
3.PageContext對象提供取得屬性的方法
Object getAttribute(String name, int scope)           ----回傳name 屬性,範圍為scope的屬性對象,回傳類型為Object
Enumeration getAttributeNamesInScope(int scope) ----回傳所有屬性範圍為scope 的屬性名稱,回傳類型為Enumeration
int getAttributesScope(String name)                     ----回傳屬性名稱為name 的屬性範圍
void removeAttribute(String name)                       ----移除屬性名稱為name 的屬性對象
void removeAttribute(String name, int scope)        ----移除屬性名稱為name,範圍為scope 的屬性對象
void setAttribute(String name, Object value, int scope) ----指定屬性對象的名稱為name、值為value、範圍為scope
Object findAttribute(String name)                         ----尋找在所有範圍中屬性名稱為name 的屬性對象


7、config 對象(轉譯後對應javax.servlet.ServletConfig對象)

config對象的主要作用是取得伺服器的配置資訊。

config對象常用方法:

 getServletContext()                  ----返回 一個含有伺服器相關資訊的ServletContext對象。
 getIntParameter(String name)  ----返回初始化參數的值。
 getIntParameterNames()          ----返回包含了Servlet初始化所需要的所有參數,傳回型別是枚舉型
8、page對象 (轉譯後對應this)

page對象代表JSP本身,只有在JSP頁面內才是合法的。page對象有點類似於Java編程中的this指標,就是指當前JSP頁面本身。
9、exception對象(轉譯後對應java.lang.Throwable對象)

exception對象的作用是顯示異常資訊,必須在page 指令中設定< %@ page isErrorPage="true" %>才能使用,在一般的JSP頁面中使用該對象將無法編譯JSP檔案。

exception對象常用方法:

getMessage( )        ----該方法返回錯誤資訊。
printStackTrace( )  ---- 該方法以標準錯誤的形式輸出一個錯誤和錯誤的堆棧。
toString()        ----該方法以字串的形式返回一個對異常的描述。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.