版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4章 JSP內(nèi)置對(duì)象,本章主要內(nèi)容:內(nèi)置對(duì)象的概念內(nèi)置對(duì)象的作用域和生命期內(nèi)置對(duì)象的作用和關(guān)系內(nèi)置對(duì)象的使用方法,第4章 JSP內(nèi)置對(duì)象,4.1 JSP內(nèi)置對(duì)象概述4.2 request對(duì)象4.3 response對(duì)象4.4 session對(duì)象4.5 application對(duì)象4.6 其他內(nèi)部對(duì)象4.7 JSP程序的調(diào)試,4.1 JSP內(nèi)置對(duì)象概述,4.1.1 JSP內(nèi)置對(duì)象的來(lái)源 4.1.2 JSP內(nèi)置對(duì)象介紹
2、,,4.1.1 JSP內(nèi)置對(duì)象的來(lái)源,有些成員變量不用聲明就可以在JSP頁(yè)面的腳本(如Java程序片和Java表達(dá)式)中使用,這就是所謂的內(nèi)置對(duì)象。使用JSP動(dòng)態(tài)網(wǎng)頁(yè)開發(fā)實(shí)現(xiàn)Java Web應(yīng)用時(shí),JSP文件通過(guò)JSP引擎翻譯為Servlet文件。這個(gè)Servlet是一個(gè)Java代碼文件,用于定義一個(gè)繼承HttpJspBase類的子類,并創(chuàng)建各個(gè)JSP內(nèi)置對(duì)象。因此,在設(shè)計(jì)JSP動(dòng)態(tài)網(wǎng)頁(yè)時(shí)可以直接使用這些對(duì)象。,,4.1.2 JSP內(nèi)
3、置對(duì)象介紹,JSP的內(nèi)置對(duì)象是由JSP容器自動(dòng)生成的,在JSP頁(yè)中可以直接使用而無(wú)須進(jìn)行聲明。在JSP動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)過(guò)程中,靈活地應(yīng)用這些內(nèi)置對(duì)象,可以實(shí)現(xiàn)許多實(shí)用的功能。在不需要顯示聲明的情況下,每一個(gè)JSP頁(yè)面中可以使用的內(nèi)置對(duì)象有9個(gè):即request、response、session、out、application、config、pageContext、page以及exception。,4.2 request對(duì)象,4.2.1 H
4、TTP請(qǐng)求包 4.2.2 request對(duì)象的常用方法 4.2.3 request對(duì)象應(yīng)用實(shí)例,,4.2.1 HTTP請(qǐng)求包,一般說(shuō)來(lái),一個(gè)HTTP請(qǐng)求包括三個(gè)部分:一個(gè)請(qǐng)求行、多個(gè)請(qǐng)求頭和信息體。1.請(qǐng)求行規(guī)定了請(qǐng)求的方法(如get、post、head、delete、put等),請(qǐng)求的資源和使用的HTTP協(xié)議版本號(hào)。2.請(qǐng)求頭請(qǐng)求頭主要說(shuō)明請(qǐng)求客戶的主機(jī)(IP)、信息體和附加信息。一個(gè)HTTP請(qǐng)求可以包括多個(gè)請(qǐng)求頭。3.
5、信息體指請(qǐng)求的正文。如表單數(shù)據(jù)被封裝為信息體。,4.2.2 request對(duì)象的常用方法,request對(duì)象包括很多方法,主要有以下幾種。(1)getProtocol()(2)getServletPath()(3)getContentLength() (4)getMethod()(5)getHeader(String s)(6)getHeaderNames()(7)getHeaders(String
6、s) (8)getRemoteAddr(),(9)getRemoteHost() (10)getServerName() (11)getServePort()(12)getParameter(String name)(13)getParameterNames() (14)getParameterValues(String name)(15)getCookies() (16)getRequestURL(),4.2.2 req
7、uest對(duì)象的常用方法,4.2.3 request對(duì)象應(yīng)用實(shí)例,客戶通常使用HTML表單向服務(wù)器的某個(gè)JSP頁(yè)面提交信息,一般格式為: [接受數(shù)據(jù)的組件(0~n個(gè))] [數(shù)據(jù)提交控件]【例4-3】獲取服務(wù)器端的有關(guān)信息在本例的request.jsp文件中,利用request對(duì)象的各種方法來(lái)獲取服務(wù)器端的各種信息參數(shù),并將其顯示出來(lái)。本例源代碼詳見(jiàn)教材,4.3 response對(duì)象,4.3.
8、1 HTTP響應(yīng)包4.3.2 response對(duì)象的常用方法4.3.3 response對(duì)象應(yīng)用實(shí)例,,4.3.1 HTTP響應(yīng)包,一個(gè)HTTP響應(yīng)包由三個(gè)部分組成:一個(gè)狀態(tài)行、多個(gè)響應(yīng)頭、信息體。1.狀態(tài)行描述服務(wù)器處理HTTP請(qǐng)求的成功與否。比如,是否收到請(qǐng)求包、請(qǐng)求被拒絕、請(qǐng)求超時(shí)、服務(wù)器發(fā)生錯(cuò)誤等。2.響應(yīng)頭HTTP響應(yīng)包發(fā)送的目標(biāo)地址(IP)。3.信息體發(fā)送到服務(wù)器端的正文。如,在客戶端顯示的信息。服務(wù)器響應(yīng)
9、客戶時(shí),它發(fā)送到客戶端的首行被稱為狀態(tài)行。,狀態(tài)行由3位數(shù)的狀態(tài)代碼和描述狀態(tài)代碼的文字組成。下面是對(duì)狀態(tài)代碼的分類描述:1xx :1開頭的3位數(shù)字,主要用于實(shí)驗(yàn)。2xx :2開頭的3位數(shù)字,表明客戶端的請(qǐng)求已成功。3xx :3開頭的3位數(shù)字,表明處理客戶的請(qǐng)求以前,應(yīng)做一些別的處理。4xx :4開頭的3位數(shù)字,表明瀏覽器請(qǐng)求是非法的或無(wú)效的。5xx :5開頭的3位數(shù)字,表明服務(wù)器出現(xiàn)了問(wèn)題。一般不需要修改狀態(tài)行,在出現(xiàn)問(wèn)題
10、時(shí),服務(wù)器會(huì)自動(dòng)響應(yīng),發(fā)送相應(yīng)的狀態(tài)代碼到客戶端。也可以使用setStatus(int n)方法來(lái)增加狀態(tài)行的內(nèi)容。,4.3.1 HTTP響應(yīng)包,狀態(tài)代碼表,狀態(tài)代碼表,4.3.2 response對(duì)象的常用方法,response對(duì)象可以使用的常用方法如下:(1)addHeader(String name,String value)(2)setHeader(String name,String value) (3)addCooki
11、e(Cookie cookie)(4)containsHeader(String name) (5)sendError(int sc),(6)SendRedirect(URL) (7)flushBuffer() (8)setContenType(String type) (9)setLocale(Locale:locale) (10)setStatus(int:statuscode) (11)isCommitted() (
12、12)reset(),4.3.2 response對(duì)象的常用方法,4.3.3 response對(duì)象應(yīng)用實(shí)例,【例4-4】控制網(wǎng)頁(yè)的刷新頻率,在頁(yè)面中,實(shí)時(shí)顯示當(dāng)前時(shí)間。要實(shí)時(shí)顯示當(dāng)前時(shí)間,必須每秒鐘刷新一次頁(yè)面,這就要求向客戶輸出的響應(yīng)包中,必須含有響應(yīng)頭Refresh,其值為1,單位是秒。本例中利用response對(duì)象的setHeader()方法添加響應(yīng)頭和屬性值。本例源代碼詳見(jiàn)教材,4.4 session對(duì)象,4.4.1 會(huì)話及
13、相關(guān)概念4.4.2 session對(duì)象的常用方法4.4.3 session對(duì)象應(yīng)用實(shí)例,4.4.1 會(huì)話及相關(guān)概念,1.會(huì)話從一個(gè)客戶打開瀏覽器連接到服務(wù)器的某個(gè)服務(wù)目錄,到客戶關(guān)閉瀏覽器,這一過(guò)程稱為一個(gè)會(huì)話 (這其間,客戶訪問(wèn)的是同一Web目錄中的網(wǎng)頁(yè))。這時(shí),在服務(wù)器端,系統(tǒng)為該客戶創(chuàng)建了一個(gè)session對(duì)象,在客戶端,系統(tǒng)為該客戶創(chuàng)建了Cookie對(duì)象。一個(gè)客戶對(duì)同一服務(wù)目錄中不同網(wǎng)頁(yè)的訪問(wèn)屬于同一會(huì)話。,2.sessi
14、on對(duì)象與Cookie當(dāng)JSP引擎為客戶創(chuàng)建一個(gè)session對(duì)象后,這個(gè)session對(duì)象被分配了一個(gè)String類型的ID號(hào),JSP引擎同時(shí)將此ID號(hào)發(fā)送到客戶端,存放在Cookie中。這樣,代表同一客戶會(huì)話的session對(duì)象和Cookie對(duì)象建立了一一對(duì)應(yīng)關(guān)系。即,每一客戶會(huì)話信息保存在session/Cookie對(duì)中。當(dāng)用戶再次訪問(wèn)連接該服務(wù)器的其他頁(yè)面時(shí),就不再分配給用戶新的session對(duì)象,直到關(guān)閉瀏覽器后,服務(wù)器端該
15、用戶的session對(duì)象才取消,并且和用戶的對(duì)應(yīng)關(guān)系也取消,4.4.1 會(huì)話及相關(guān)概念,3.session對(duì)象與線程當(dāng)多個(gè)客戶點(diǎn)擊同一頁(yè)面時(shí),JSP引擎為每個(gè)客戶啟動(dòng)一個(gè)線程,這就是說(shuō),一個(gè)客戶對(duì)應(yīng)一個(gè)線程,每個(gè)線程對(duì)應(yīng)一個(gè)session對(duì)象,每個(gè)線程的session對(duì)象不同。4.session對(duì)象的生命周期從一個(gè)客戶會(huì)話開始到會(huì)話結(jié)束這段時(shí)間稱為session對(duì)象的生命周期。具體上說(shuō),指客戶訪問(wèn)某web目錄下的頁(yè)面到關(guān)閉瀏覽器,
16、離開該web目錄,這段時(shí)間成為session對(duì)象的生命周期。,4.4.1 會(huì)話及相關(guān)概念,4.4.2 session對(duì)象的常用方法,session對(duì)象可以使用的常用方法如下:(1)getAttribute(String name) (2)getAttributeNames() (3)getCreationTime()(4)getId() (5)getLastAccessedTime()(6)getMaxInactiveInt
17、erval() (7)setMaxInactiveInterval (int interval)(8)removeAttribute(String name)(9)setAttribute(String name,Java.lang.Object value) (10)invalidate() (11)isNew(),4.4.3 session對(duì)象應(yīng)用實(shí)例,【例】控制網(wǎng)頁(yè)的刷新頻率,在頁(yè)面中,實(shí)時(shí)顯示當(dāng)前時(shí)間。要實(shí)時(shí)顯示當(dāng)前
18、時(shí)間,必須每秒鐘刷新一次頁(yè)面,這就要求向客戶輸出的響應(yīng)包中,必須含有響應(yīng)頭Refresh,其值為1,單位是秒。本例中利用response對(duì)象的setHeader()方法添加響應(yīng)頭和屬性值。本例源代碼詳見(jiàn)教材,4.5 application對(duì)象,4.5.1 application對(duì)象的常用方法4.5.2 application對(duì)象的應(yīng)用實(shí)例4.4.3 session對(duì)象應(yīng)用實(shí)例,4.5.1 application對(duì)象的常用方法,ap
19、plication對(duì)象的主要方法有如下幾種。(1)getAttribute(String name) (2)getAttributeNames() (3)getInitParameter(String name) (4)getServerInfo()(5)setAttribute(String name, Object obj)(6)removeAttribute(String name) (7)getContext(St
20、ring urlpath) (8)getMimeType(String filename) (9)getRealPath(String path),4.5.2 application對(duì)象的應(yīng)用實(shí)例,【例4-10】讀取系統(tǒng)信息。本例主要是輸出頁(yè)面所在的實(shí)際路徑、使用的JSP引擎和application對(duì)象對(duì)應(yīng)的字符串。本例源代碼詳見(jiàn)教材,4.6 其他內(nèi)部對(duì)象,4.6.1 out對(duì)象4.6.2 page對(duì)象4.6.3 pageC
21、ontext對(duì)象4.6.4 config對(duì)象4.6.5 exception對(duì)象,4.6.1 out對(duì)象,out對(duì)象是一個(gè)輸出流,是JSP使用最頻繁的對(duì)象,能把結(jié)果輸出到網(wǎng)頁(yè)上。并且out對(duì)象還管理應(yīng)用服務(wù)器上的輸出緩沖區(qū)。out對(duì)象的常用方法如下:(1)out.print()或out.println() (2)out.newLine() (3)out.clearBuffer()(4)out.clear()(5)out.f
22、lush() (6)out.getBufferSize() (7)out.getRemaining() (8)out.isAutoFlush(),4.6.2 page對(duì)象,page對(duì)象屬于java.lang.Object類型,它是處理當(dāng)前請(qǐng)求的JSP實(shí)現(xiàn)類的實(shí)例。page對(duì)象指向當(dāng)前JSP頁(yè)面本身,更確切地說(shuō),它代表JSP被轉(zhuǎn)譯后的Servlet,因此,它可以調(diào)用Servlet類所定義的方法,在程序中可以用this來(lái)引用它。
23、【例】輸出JSP頁(yè)面對(duì)象的ID號(hào)和hash代碼值。本例調(diào)用page對(duì)象的hashCode()方法和toString()方法,分別獲取page對(duì)象的hash代碼值和ID號(hào)。程序源代碼詳見(jiàn)教材。,4.6.3 pageContext對(duì)象,pageContext是javax.servlet.jsp.PageContext類的一個(gè)實(shí)例。pageContext對(duì)象相當(dāng)于JSP頁(yè)面所有功能的大集成者,它提供了對(duì)JSP頁(yè)內(nèi)所有的對(duì)象及命名空間的訪問(wèn)。
24、使用該對(duì)象可以訪問(wèn)當(dāng)前頁(yè)所在session的屬性值,也可以訪問(wèn)當(dāng)前頁(yè)所在application的屬性值,并且允許向其他應(yīng)用組件轉(zhuǎn)發(fā)Request對(duì)象,或者從其他應(yīng)用組件包含Request對(duì)象。,pageContext對(duì)象的常用方法如下:(1)getAttribute() (2)forward(String relativeUrlPath) (3)findAttribute() (4)getexception() (5)setA
25、ttribute()(6)removeAttribute(),4.6.3 pageContext對(duì)象,4.6.4 config對(duì)象,config對(duì)象是JSP頁(yè)面通過(guò)JSP Container進(jìn)行初始化時(shí)被傳遞的對(duì)象。config對(duì)象具有Web服務(wù)器環(huán)境設(shè)定值。使用config對(duì)象的優(yōu)點(diǎn)是在修改需要在Web服務(wù)器中處理的變量時(shí),不需要逐一修改JSP文件,只要修改相應(yīng)屬性文件的內(nèi)容就可以了。,config對(duì)象的常用方法如下:(1)ge
26、tInitParameter(String name)(2)getInitParameterNames() (3)getServletNames() (4)getServletContext(),4.6.4 config對(duì)象,4.6.5 exception對(duì)象,exception對(duì)象用來(lái)處理JSP文件在執(zhí)行時(shí)所發(fā)生的錯(cuò)誤和異常。exception對(duì)象可以配合page指令一起使用,通過(guò)指定某一頁(yè)面為錯(cuò)誤處理頁(yè)面,把所有的錯(cuò)誤都集中到
27、那個(gè)頁(yè)面進(jìn)行處理。這樣可以使得整個(gè)系統(tǒng)更加健壯,也使得程序的流程更加清晰,這也是JSP比ASP和PHP先進(jìn)的地方。,exception對(duì)象的常用方法如下:(1)getMessage()(2)printStackTrace()(3)toString(),4.6.5 exception對(duì)象,4.7 JSP程序的調(diào)試,4.7.1 三種錯(cuò)誤類型4.7.2 JSP語(yǔ)法錯(cuò)誤的調(diào)試4.7.3 JSP運(yùn)行錯(cuò)誤的調(diào)試,4.7.1 三種錯(cuò)誤類型,
28、當(dāng)程序不能正常運(yùn)行或運(yùn)行結(jié)果不正確時(shí),就表明程序中有錯(cuò)。在JSP程序中,常見(jiàn)的錯(cuò)誤有以下3種:1)語(yǔ)法錯(cuò)誤2)運(yùn)行錯(cuò)誤3)邏輯錯(cuò)誤,4.7.2 JSP語(yǔ)法錯(cuò)誤的調(diào)試,本節(jié)以一個(gè)乘法九九表的的例子來(lái)分析在編寫JSP程序時(shí)經(jīng)常會(huì)遇到的語(yǔ)法錯(cuò)誤。例題詳見(jiàn)教材,4.7.3 JSP運(yùn)行錯(cuò)誤的調(diào)試,運(yùn)行錯(cuò)誤是當(dāng)JSP引擎將JS文件編譯成的Servlet加載到內(nèi)存執(zhí)行時(shí)發(fā)生的錯(cuò)誤,如數(shù)組越界、除零及一些數(shù)據(jù)操作都可能導(dǎo)致運(yùn)行錯(cuò)誤。,本 章 小
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)專業(yè)畢業(yè)設(shè)計(jì)外文翻譯--jsp內(nèi)置對(duì)象
- 第四章jsp對(duì)象
- 第04章 jsp語(yǔ)法
- 第10章 jsp應(yīng)用實(shí)例
- 第3章 jsp語(yǔ)言基礎(chǔ)
- 第7章 jsp與javabean
- 第8章document對(duì)象
- 第2章 _window對(duì)象-
- 第2章 jsp運(yùn)行環(huán)境的搭建
- 第5章類和對(duì)象一
- 第4章.doc
- 第4章__內(nèi)存
- 第3章第4章習(xí)題解答
- 第4章微分
- 第4章 組織
- 第4章.doc
- 第4章.doc
- 第4章 內(nèi)存
評(píng)論
0/150
提交評(píng)論