jsp內建對象詳解

來源:互聯網
上載者:User

JSP基於Java語言,物件導向也是它的一大特色.JSP中包含大量的內建對象和可擴充的組件對象.可以說,對象是JSP編程技術的精髓.在這一章中,我們將介紹JSP中的對象,重點講述JSP的內建對象,說明它們的功能,並通過樣本來介紹它們的使用方法.

掌握JSP的內建對象的用法,基本掌握JSP的開發技巧

要求

能靈活應用JSP的內建對象來開發程式

技能

介紹JSP的內建對象

理論

3.1 對象與內建對象

對象是典型的具有方法,屬性和集合的事物

對象的屬性反映了對象的狀態,可以讀取或設定.對象的集合是由很多不同的與對象有關係的屬性和值的配對組成的.

對於一般的對象,要想使用它,必須先聲明一個類,再將它執行個體化,就會得到一個可以使用的對象.

下面我們通過一個例子來講解一般對象的使用方法.

檔案useobject.jsp _____

JSP程式中8個預設的內建對象

對於它們而言,不用聲明就可以直接使用.這8個對象分別是request,response,pageContext,session,application,out,config和page.

page

實現處理本頁當前請求的類的執行個體

java.1ang.Object

page

page

本 JSP 的 ServletConfig

javax.servlet.ServletConfig

config

page

向輸出資料流寫入內容的對象

Javax.servlet.jsp.JspWriter

out

application

從 servlet 設定物件獲得的 servlet 上下文(如在 getServletConfig() ,getContext()的調用中)

Javax.servlet.ServletContext

application

session

為請求的客戶建立的session對象

Javax.servlet.http.HttpSession

session

page

本 JSP 的頁面上下文

Javax.servlet.jsp.PageContext

pageContext

page

對請求的應答

依賴協議的java.servlet.ServletResponse 子類(例如,javax.servlet.HttpServletResponse)

response

request

觸發服務調用的請求

依 ??協議的java.servlet.ServletRequest 子類(例如,javax.servlet.HttpServletRequest)

Request

範圍

代表內容

類型

內建對象

3.2 request對象

request對象是ServletRequest的一個執行個體.當用戶端請求一個JSP網頁時,JSP引擎會將用戶端的請求資訊封裝在這個request對象中,請求資訊的內容包括請求的標題頭(Header),資訊(如瀏覽器的版本資訊,語言和編碼方式等),請求的方式(如HTTP方法:GET,POST,PUT等),請求的參數名稱,參數值和用戶端的主機名稱等,然後將request對象當作jspService方法的HttpServletRequest參數值,所以我們可以通過這個對象來取得有關用戶端的請求資訊.

3.2.1 request對象的方法

方法

返回接收請求的連接埠

getServerPort

返回接收請求的伺服器的主機名稱

getServerName

返回傳出請求的 URL 的機制

getScheme

返回傳送請求的介面程式的完整主機名稱

getRemoteHost

返回傳送請求的介面程式的 IP 位址

getRemoteAddr

返回運用替換規則從虛擬位址中獲得的實際地址

getRealPath

返回從請求體中讀取的文本的快取資料

getReader

返回請求的協議和版本號碼

getProtocol

返回作為字串列舉的指定參數的值

getParameterValues

返回本次請求的參數名字

getParameterName

返回包含指定參數的單獨值的字串

getParameter

返回在請求體中讀取位元據的輸入資料流

getlnputStream

返回請求實體資料的 InternetMedia 類型

getContenType

返回請求實體資料的大小

getContentLength

返回為請求的輸入進行編碼的字元集合

getCharacterEncoding

返回請求的給出名字的屬性的值

getAttribute

描述

方法

request對象使用樣本

1. request對象擷取伺服器及用戶端的資訊

檔案 request1.jsp

2. 用request對象來擷取和處理表單傳過來的參數值

(1) 建立HTML表單

(2) 使用GET和POST方法

(3) 用request對象處理

使用者輸入的資料用來存放在request對象裡,用javax.servlet.HttpServletRequest來執行,你可以在JSP代碼中直接存取request對象.並且處理表單傳送過來的資料.

檔案 request3.htm request3.jsp

3. 用request對象來擷取和處理表單傳過來的中文參數值的處理

檔案 request2.htm request2.jsp

3.3 response對象

response對象的類型是javax.servlet.ServletResponse類的執行個體,JSP引擎會根據用戶端的請求資訊建立一個預設的response對象.它用於將瀏覽器參考資訊,如回應的Header,回應本體(HTML的內容)以及伺服器端的狀態代碼等資訊提供給用戶端.

3.3.1 response對象的方法

重新導向用戶端的地址

sendRedirect

設定指定名字的HTTP檔案頭的值

setHeader

向用戶端發送錯誤資訊

sendError

判斷指定的HTTP檔案頭是否存在

containsHeader

添加HTTP檔案頭(Header),將會傳送到用戶端

addHeader

添加一個Cookie對象,用來儲存用戶端的使用者資訊

addCookie

為應答設定內容類型

setContentType

為應答設定內容長度

setContentLength

返回用于格式化文本應答的列印程式

getWriter

返回用於書寫二進位應答資料的輸出資料流

getCharacterEncoding

返回用於MIME編碼的字元集合

getCharacterEncoding

3.3.2 response對象使用樣本

下面的樣本程式實現了定時重新整理頁面的功能

檔案refresh.jsp

這個程式指定頁面每隔5秒鐘自動重新整理一遍,伺服器重新執行這個程式,產生新的目前時間,然後輸出到用戶端.所以,頁面上顯示的時間每隔5秒鐘就增加5秒鐘,實現了類似時鐘的功能.

下面的樣本程式實現了頁面重新導向功能

檔案request2.htm

輸入使用者名稱為admin,進入管理介面;否則,則進入普通使用者介面.

3.4 session對象

session對象是JSP中一個很重要的內部對象,我們使用它來儲存某個特定用戶端(訪問者)一次訪問的一些特定資訊.

在JSP網路編程中,有多種方法可以儲存客戶資訊,但是最常用,最實用的還是session對象.

3.4.1 session對象介紹

session對象,實際上就是伺服器與用戶端之間的"會話"

(1) session可以用來儲存訪問者的一些特定資訊.主機伺服器就是根據session來跟蹤這些資訊的.

(2) session可以建立訪問者資訊容器.

(3) session可以用來跟蹤訪問者的訪問路徑,從中挖掘有用的資訊,如訪問者的興趣愛好,訪問目的.

使用者在Web應用程式中訪問同一頁面時,session變數始終存在,當使用者在應用程式的頁之間跳轉時,儲存在session對象中的變數也不會清除,當然也可以使用session方法顯式地結束一個會話和設定空閑會話的逾時期限.

session在JSP程式中是一個內建的對象

每一個用戶端都有一個session對象用來存放於這個用戶端相關的資料.

在JSP的程式中,通常不用任何代碼,就可以直接使用session對象.不過為了確認,可以加入以下代碼,以表示需要啟動session功能.

如果設定上述的session值為false,則說明禁用session功能.

session對象的類為HttpSession,它提供了很多使用的方法.

3.4.2 session對象的方法

session對象的類是HttpSession.HttpSession由伺服器的程式實現,提供HTTP伺服器和HTTP用戶端之間的會話.會話,就是在給定時間段內持續進行多路串連和請求.會話被用來在多頁面請求中保持狀態和使用者認證.

session對象的常用方法

移去和會話應用程式層資料中指定名字相連的對象

removeValue

將指定的對象和使用指定名字的會話應用程式層資料相連

putValue

檢查是否用戶端參加了會話

isNew

使會話無效,並將其從上下文中移出

invalidate

返回和會話相連的應用程式層資料對象的名字

getValueNames

返回和應用程式層資料中指定名字相聯絡的對象

getValue

返回會話相連的上下文

getSessionContext

返回用戶端上一次發送攜帶會話帳號的時間

getLastAccessTime

返回工作階段識別項

getId

返回會話建立的時間

getCreationTime

3.4.3 session對象使用樣本

為說明session對象的具體應用,以用三個頁面類比一個多頁面的Web應用為例

(1) 第一個頁面(q1.html)僅包含一個要求輸入使用者名稱字的HTML表單 .

檔案q1.htm

(2)第二個頁面是一個JSP頁面(q2.jsp),它通過request對象提取q1.html表單中的thename值,將它儲存為name變數,然後將這個name值儲存到session對象中.q2.jsp的另外一個任務是詢問第二個問題.

(3) 第三個頁面也是一個JSP頁面(q3.jsp),主要任務是顯示問答結果,另外一個任務是提取在第二個頁面中的使用者輸入並顯示它.

通常會話管理是通過伺服器將SessionID作為一個cookie儲存在使用者的Web瀏覽器中來唯一標識每個使用者會話

如果瀏覽器不支援cookie,或者將瀏覽器設定為不接受cookie,我們可通過URL重寫來實現會話管理.

檔案hello1.jsp

使用session對象在3個不同的JSP檔案中儲存資訊

檔案example0.htm(在accountBalance中必須輸入數字)

3.5 application對象

application對象儲存了一個應用系統中一些公用的資料.與session對象相比,application對象是所有客戶共用的,而session對象則是每個客戶專用的.application對象可以是javax.servlet.ServletContext類型的.ServletContext介面讓servlet訪問關於其環境的資訊.application對象的範圍是application.

3.5.1 application對象的方法

方法

設定某個application對象的某個屬性值

setAttribute

獲得目前的版本的Servlet編譯器的資訊

getServerInfo

返回application某個屬性的值

getInitParameter

以Enumeration資料形式返回所有application對象的屬性名稱

getAttributeNames

以Object對象的形式返回對應名稱的application對象的屬性值

getAttribute

含義

對象

3.5.2 application對象的使用樣本

一個使用了application對象的計數器

檔案 appcount.jsp

應用application內建對象,將上面的session例子改為application的例子.

檔案 application1.htm

3.6 out對象

out對象用於輸出資料,它可以是javax.servlet.jsp.JspWriter的一個執行個體.out對象的範圍是page.

從java.io.Writer拓展而來的公用抽象類別JspWriter效仿了java.io.BufferedWriter和java.Io.PrintWriter中的某些功能.但是,不同之處在於它會在列印方法中拋出(throw) java.Io.IOException異常,而PrintWriter不這樣做.

JSP中的out對象就是這種類型的.如果page指令選擇了autoflush="true",那麼當出現由於當前的操作不清空緩衝而造成緩衝區溢位的情況時,這個類的所有I/O操作會自動清空緩衝區的內容.如果autoflush="false",那麼當操作造成了緩衝區溢位時,這個類的所有的I/O操作將拋出一個IOException.

3.6.1 out對象的變數

autoFlush

類型為protected boolean autoflush

如果變數值為真,則噹噹前的操作造成緩衝區溢位時,緩衝區會被清空.

如果變數值為假,則如果當前操作造成緩衝區溢位就會拋出一個IOException.

bufferSize

類型為protectedintbufferSize

表示緩衝區目前的大小.初始值根據不同的裝置而不同,但是不少於8KB.

DEFAULT_BUFFER

類型為publicstaticfinalintDEFAULT_BUFFER

表示Writer正使用的預設的緩衝區大小設定.

No_BUFFER

類型為Public static final int NO_BUFFER

表示Writer是否處於緩衝輸出狀態.

3.6.2 Out對象的方法

方法

列印一個對象

Object

print

列印一個長整數

long

print

列印一個整數

int

print

列印一個浮點數

float

print

列印一個雙精確度浮點數

double

print

列印一個字元數組

char[]

print

列印一個字元

char

print

列印一個布爾值

boolean

print

寫一行分隔字元

_

newLine

獲得autoFlush的當前值

_

isAutoFlush

獲得緩衝區中未使用的位元組數

_

getRemaining

獲得緩衝區的大小

_

getBufferSize

清除緩衝區的流

_

clearBuffer

Clear 清除緩衝區內容

_

Clear

輸出資料流

_

flush

關閉流,並輸出

_

Close

描述

參數

方法

列印一個字串,然後結束行

String

println

列印一個對象,然後結束行

Object

println

列印一個長整數,然後結束行

long

println

列印一個整數,然後結束行

int

println

列印一個浮點數,然後結束行

float

println

列印一個雙精確度浮點數,然後結束行

double

println

列印一個字元數組,然後結束行

char[]

println

列印一個字元,然後結束行

char

prinfln

列印一個布爾值,然後結束行

boolean

println

通過寫一個行分隔字元來結束當前行

_

println

列印一個字串

String

print

3.6.3 Out對象的使用樣本

用out對象輸出多種不同類型的資料,包括輸出中文

檔案out.jsp

3.7 其他對象

pageContext對象

pageContext對象是javax.servlet.jsp.PageContext類的一個執行個體.pageContext對象提供了存取所有關於JSP程式執行時所需要用到的屬性和方法,如session,application,config,out等對象屬性.對於pageContext對象,它的範圍是page.

page對象

page對象是java.lang.Object類型的,它是處理當前請求的JSP頁的實作類別的執行個體.page對象在頁的本文中可以被看作"this"的同義字.page對象的範圍是page.

config對象

config對象是javax.servlet.ServletConfig類型的.它提供存取servlet class初始參數及有關Server環境資訊的ServletContext對象.config對象的範圍是page.

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.