《JavaWeb應(yīng)用開發(fā)技術(shù)實(shí)用教程》-第3章JSP隱含對(duì)象課件_第1頁(yè)
《JavaWeb應(yīng)用開發(fā)技術(shù)實(shí)用教程》-第3章JSP隱含對(duì)象課件_第2頁(yè)
《JavaWeb應(yīng)用開發(fā)技術(shù)實(shí)用教程》-第3章JSP隱含對(duì)象課件_第3頁(yè)
《JavaWeb應(yīng)用開發(fā)技術(shù)實(shí)用教程》-第3章JSP隱含對(duì)象課件_第4頁(yè)
《JavaWeb應(yīng)用開發(fā)技術(shù)實(shí)用教程》-第3章JSP隱含對(duì)象課件_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Java Web開發(fā)技術(shù)第3章 JSP隱含對(duì)象10/12/20221Java Web開發(fā)技術(shù)第3章 10/9/20221第3章 JSP隱含對(duì)象為簡(jiǎn)化Web頁(yè)面的開發(fā)過(guò)程,JSP提供了一些由容器實(shí)現(xiàn)和管理的隱含對(duì)象,這些對(duì)象在JSP頁(yè)面中可以直接使用,不需要JSP頁(yè)面編寫者實(shí)例化。在JSP頁(yè)面中,可以通過(guò)存取這些隱含對(duì)象實(shí)現(xiàn)與JSP頁(yè)面和Servlet環(huán)境的相互訪問(wèn)。本章主要內(nèi)容包括:JSP隱含對(duì)象概述和各類隱含對(duì)象的具體說(shuō)明。10/12/20222Java Web開發(fā)技術(shù)第3章 JSP隱含對(duì)象為簡(jiǎn)化Web頁(yè)面的開發(fā)過(guò)程,JSP提3.1 JSP隱含對(duì)象概述JSP頁(yè)面的隱含對(duì)象就是在JSP頁(yè)面中不

2、用聲明就可以使用的對(duì)象。隱含對(duì)象是JSP引擎自動(dòng)創(chuàng)建的Java類實(shí)例,它們能與Servlet環(huán)境交互。隱含對(duì)象可以實(shí)現(xiàn)很多功能,如從客戶端獲得數(shù)據(jù)、向客戶端發(fā)回?cái)?shù)據(jù)、控制傳輸數(shù)據(jù)的有效域和異常處理等。如:10/12/20223Java Web開發(fā)技術(shù)3.1 JSP隱含對(duì)象概述JSP頁(yè)面的隱含對(duì)象就是在JSP頁(yè)隱含對(duì)象功能不必使用表達(dá)式,直接存取out對(duì)象來(lái)打印一些東西到客戶端: 不必直接傳送參數(shù),可以借助請(qǐng)求對(duì)象來(lái)取得客戶端輸入的參數(shù)值: 完成頁(yè)面的重定向: 在錯(cuò)誤頁(yè)面中顯示出錯(cuò)信息: 等等10/12/20224Java Web開發(fā)技術(shù)隱含對(duì)象功能不必使用表達(dá)式,直接存取out對(duì)象來(lái)打印一些東

3、西JSP中的9種隱含對(duì)象與輸入/輸出有關(guān) 與屬性作用域有關(guān) 與Servlet 相關(guān) 與錯(cuò)誤處理有關(guān) 10/12/20225Java Web開發(fā)技術(shù)JSP中的9種隱含對(duì)象與輸入/輸出有關(guān) 與屬性作用域有關(guān) 與3.2與輸入/輸出有關(guān)的隱含對(duì)象 3.2.1 request對(duì)象 3.2.2 response對(duì)象 3.2.3 out對(duì)象10/12/20226Java Web開發(fā)技術(shù)3.2與輸入/輸出有關(guān)的隱含對(duì)象 3.2.1 reques3.2.1 request對(duì)象在JSP頁(yè)面中,隱含對(duì)象request代表的是來(lái)自客戶端的請(qǐng)求,通過(guò)它可以查看請(qǐng)求參數(shù)、請(qǐng)求類型(GET,POST,HEAD等)以及請(qǐng)求的

4、HTTP頭(Cookie,Referer等)客戶端信息 ,它是實(shí)現(xiàn) javax.servlet.HttpServletRequest 接口的類的一個(gè)實(shí)例。 request 對(duì)象的方法有很多 ,從功能角度可以將這些方法分為4類: 10/12/20227Java Web開發(fā)技術(shù)3.2.1 request對(duì)象在JSP頁(yè)面中,隱含對(duì)象req1取得請(qǐng)求參數(shù)的方法 10/12/20228Java Web開發(fā)技術(shù)1取得請(qǐng)求參數(shù)的方法 10/9/20228Java Web2.取得請(qǐng)求HTTP 頭的方法 10/12/20229Java Web開發(fā)技術(shù)2.取得請(qǐng)求HTTP 頭的方法 10/9/20229Java3

5、儲(chǔ)存和取得屬性方法 10/12/202210Java Web開發(fā)技術(shù)3儲(chǔ)存和取得屬性方法 10/9/202210Java We4其他的方法 10/12/202211Java Web開發(fā)技術(shù)4其他的方法 10/9/202211Java Web開發(fā)技4其他的方法(續(xù))10/12/202212Java Web開發(fā)技術(shù)4其他的方法(續(xù))10/9/202212Java Web開request比較重要的方法 getParameter() getParameterNames() getParameterValues() getHeader() 記住噢10/12/202213Java Web開發(fā)技術(shù)reque

6、st比較重要的方法 getParameter(). 獲得客戶端提交的信息例exa3_1.jsp : 一個(gè)html文檔exa3_1.jsp提交一個(gè)表單給tree.jsp頁(yè)面,tree.jsp通過(guò)request.getParameter()接收表單中的客戶輸入,并將有關(guān)信息送回客戶端。10/12/202214Java Web開發(fā)技術(shù). 獲得客戶端提交的信息例exa3_1.jsp獲得客戶端提交的信息(續(xù)) 文本框提交的用戶名為: 客戶端提交的按鈕的名字為: exa3_1.jsp tree.jsp 1.運(yùn)行2.調(diào)用3.結(jié)果10/12/202215Java Web開發(fā)技術(shù)獲得客戶端提交的信息(續(xù))% p

7、age contentT. 處理中文信息在例exa3_1.jsp中輸入中文時(shí)將不能正確顯示, 如圖所示:這就引發(fā)如何處理客戶端提交的中文問(wèn)題。JSP頁(yè)面的漢字問(wèn)題主要指兩方面:JSP頁(yè)面中的漢字問(wèn)題和表單提交的漢字問(wèn)題。 10/12/202216Java Web開發(fā)技術(shù). 處理中文信息在例exa3_1.jsp中輸入(1)JSP頁(yè)面的漢字問(wèn)題對(duì)于JSP頁(yè)面的漢字問(wèn)題,需要在JSP中使用page指令告訴客戶端漢字的編碼方式:。在沒(méi)有特別指示下,瀏覽器無(wú)法正確顯示漢字,每個(gè)要顯示漢字的JSP頁(yè)面都應(yīng)該包含該語(yǔ)句。 10/12/202217Java Web開發(fā)技術(shù)(1)JSP頁(yè)面的漢字問(wèn)題對(duì)于JSP頁(yè)

8、面的漢字問(wèn)題,需要在J(2)表單提交的漢字問(wèn)題客戶端和服務(wù)器交互過(guò)程中,在客戶端和服務(wù)器用的是GB2312對(duì)漢字編碼,而HTTP傳輸用ISO_8859_1編碼,因此,不僅服務(wù)器端必須用指令指示客戶端漢字的顯示編碼,同時(shí)在服務(wù)器端接收到客戶端數(shù)據(jù)時(shí)需要將編碼轉(zhuǎn)換為GB2312后進(jìn)行處理,方法是: 或 其中tt為表單提交的含有中文的變量10/12/202218Java Web開發(fā)技術(shù)(2)表單提交的漢字問(wèn)題客戶端和服務(wù)器交互過(guò)程中,在客戶端和改進(jìn)后的tree.jsp 我們只須在tree.jsp中加入中文處理的相關(guān)語(yǔ)句,中文就能正確顯示了 ,代碼如下: 文本框提交的用戶名為: %String ext

9、Content=request.getParameter(boy); 10/12/202219Java Web開發(fā)技術(shù)改進(jìn)后的tree.jsp 我們只須在tree.jsp中加入中. 避免空指針異常例如一表單向JSP頁(yè)面提交一個(gè)正數(shù),然后計(jì)算這個(gè)正數(shù)的平方根,JSP中有這么一個(gè)語(yǔ)句:String textContent=request.getParameter(“num”),其中num代表表單提交的正數(shù),要注意由于JSP引擎在運(yùn)行這個(gè)JSP頁(yè)面時(shí),客戶端還沒(méi)有提交數(shù)據(jù),textContent也還沒(méi)有創(chuàng)建,而JSP頁(yè)面中的number=Double.parseDouble(textContent)

10、語(yǔ)句需要使用textContent,此時(shí)textContent對(duì)象為null,Java解釋器會(huì)提示出現(xiàn)空指針異常NullPointerException。為了避免使用空對(duì)象,在JSP頁(yè)面中使用了如下代碼: if ( textContent=null ) textContent=100; 10/12/202220Java Web開發(fā)技術(shù). 避免空指針異常例如一表單向JSP頁(yè)面提交一. 其它常用方法getServletPath() getContentLength() getMethod() getHeader( )getProtocol() 10/12/202221Java Web開發(fā)技術(shù). 其

11、它常用方法getServletPath. 獲取HTML表單中的各種數(shù)據(jù)由于客戶端經(jīng)常使用表單提交數(shù)據(jù),本節(jié)通過(guò)例子來(lái)說(shuō)明表單中各種提交手段的用法。 表單的一般格式為: 表單中的標(biāo)記(數(shù)據(jù)提交的手段) 10/12/202222Java Web開發(fā)技術(shù). 獲取HTML表單中的各種數(shù)據(jù)由于客戶端表單中各種提交手段 (1)下面例text.jsp表單的輸入方式是文本框和口令,,運(yùn)行結(jié)果如圖3-8所示。text.jsp關(guān)鍵代碼:表單 用戶登錄 用戶名: 圖3-8密碼:10/12/202223Java Web開發(fā)技術(shù)表單中各種提交手段 (1)下面例text.jsp表單的輸入方表單中各種提交手段 (2)下面例

12、子用單選按鈕實(shí)現(xiàn)網(wǎng)上測(cè)試 radio.jsp關(guān)鍵代碼: answer.jsp關(guān)鍵代碼:p詩(shī)人李清照是中國(guó)歷史上哪個(gè)朝代的人?宋朝唐朝明朝清朝史記的作者是誰(shuí)?曹雪芹羅貫中李白司馬遷您的了分圖3-9 radio.jsp的輸出結(jié)果10/12/202224Java Web開發(fā)技術(shù)表單中各種提交手段 (2)下面例子用單選按鈕實(shí)現(xiàn)網(wǎng)上測(cè)試 p表單中各種提交手段 (3)下面例子說(shuō)明滾動(dòng)列表使用方式 :select.jsp關(guān)鍵代碼:選擇計(jì)算和的方式 計(jì)算1到n的和 計(jì)算1到n的平方和 計(jì)算1到n的立方和請(qǐng)選擇n的值 n=10 n=20 n=30 n=40 n=50 n=100sum.jsp關(guān)鍵代碼:% int

13、 sum=0; String s1=request.getParameter(girl); String s2=request.getParameter(boy); int n=Integer.parseInt(s2); if(s1.equals(1) for(int i=1;i=n;i+) sum+=i; else if(s1.equals(2) for(int i=1;i=n;i+) sum+=i*i; else for(int i=1;i您的求和結(jié)果是10/12/202225Java Web開發(fā)技術(shù)表單中各種提交手段 (3)下面例子說(shuō)明滾動(dòng)列表使用方式 :s. 表格表格由和標(biāo)記定義。一般

14、格式為: 單元格中的數(shù)據(jù) 單元格中的數(shù)據(jù) 10/12/202226Java Web開發(fā)技術(shù). 表格表格由和表格應(yīng)用舉例下面例tableform.jsp是表單使用,運(yùn)行結(jié)果如圖所示。tableform.jsp關(guān)鍵代碼: 杜甫是哪個(gè)朝代的人?: 宋朝 唐朝 請(qǐng)?jiān)谟疫叡砀裰休斎霐?shù)據(jù): 10/12/202227Java Web開發(fā)技術(shù)表格應(yīng)用舉例下面例tableform.jsp是表單使用,運(yùn)行3.2.2 response對(duì)象當(dāng)客戶訪問(wèn)一個(gè)服務(wù)器的頁(yè)面時(shí),會(huì)提交一個(gè)HTTP請(qǐng)求,服務(wù)器接到請(qǐng)求時(shí)會(huì)返回HTTP響應(yīng)。響應(yīng)是實(shí)現(xiàn) javax.servlet.HttpServletResponse接口的類的一

15、個(gè)實(shí)例。response對(duì)象代表的是對(duì)客戶端的響應(yīng),可以通過(guò)response對(duì)象來(lái)組織發(fā)送到客戶端的數(shù)據(jù)。response對(duì)象的方法也有很多, 下面的幾個(gè)表列出了response對(duì)象的主要方法 :10/12/202228Java Web開發(fā)技術(shù)3.2.2 response對(duì)象當(dāng)客戶訪問(wèn)一個(gè)服務(wù)器的頁(yè)面時(shí)設(shè)定表頭的方法 10/12/202229Java Web開發(fā)技術(shù)設(shè)定表頭的方法 10/9/202229Java Web開發(fā)技設(shè)定響應(yīng)狀態(tài)碼的方法 10/12/202230Java Web開發(fā)技術(shù)設(shè)定響應(yīng)狀態(tài)碼的方法 10/9/202230Java Web用來(lái)URL 重寫的方法 10/12/202

16、231Java Web開發(fā)技術(shù)用來(lái)URL 重寫的方法 10/9/202231Java We其它方法 10/12/202232Java Web開發(fā)技術(shù)其它方法 10/9/202232Java Web開發(fā)技術(shù)重要!response對(duì)象中使用較多的方法是:setContentType()sendRedirect()setHeader() 記住噢10/12/202233Java Web開發(fā)技術(shù)重要!response對(duì)象中使用較多的方法是:記住噢10/9. 動(dòng)態(tài)設(shè)置MIME類型在page指令中的contentType屬性用來(lái)指定response對(duì)象響應(yīng)客戶端請(qǐng)求的MIME(Multipurpose In

17、ternet Mail Extension protocol,多用途網(wǎng)際郵件擴(kuò)充協(xié)議)類型。 ContentType屬性值和MIME類型的主要對(duì)應(yīng)關(guān)系如下表所示: 10/12/202234Java Web開發(fā)技術(shù). 動(dòng)態(tài)設(shè)置MIME類型在page指令中的cocontentType屬性和MIME類型的對(duì)應(yīng)關(guān)系 page指令只能為contentType指定一個(gè)值,如果想動(dòng)態(tài)地改變這個(gè)屬性的值來(lái)以各種不同的方式做出響應(yīng),就要使用response對(duì)象的setContentType()方法改變contentType的值。一旦這個(gè)屬性值被改變,服務(wù)器就將按照新的MIME類型做出響應(yīng) 。參考example3

18、-11.jsp 。10/12/202235Java Web開發(fā)技術(shù)contentType屬性和MIME類型的對(duì)應(yīng)關(guān)系 . response對(duì)象的http頭response對(duì)象可以使用addHeader()和setHeader()方法動(dòng)態(tài)添加和修改相應(yīng)頭的值,并將這些頭發(fā)送給客戶端。下面例example3_12.jsp中,response對(duì)象添加一個(gè)頭refresh,使客戶端在顯示該頁(yè)面時(shí),每5秒鐘刷新一次。運(yùn)行結(jié)果如圖 : example3_12.jsp關(guān)鍵代碼:現(xiàn)在的時(shí)間是:10/12/202236Java Web開發(fā)技術(shù). response對(duì)象的http頭resp. response重定向

19、下面例中,客戶填寫表單,并提交給tree4.jsp頁(yè)面。如果表單填寫不完整,tree4.jsp會(huì)重新定向到填寫頁(yè)面,否則顯示歡迎字樣,運(yùn)行結(jié)果如圖 : tree4.jsp關(guān)鍵代碼:10/12/202237Java Web開發(fā)技術(shù). response重定向下面例中,客戶填寫表. response的狀態(tài)行當(dāng)服務(wù)器響應(yīng)客戶端請(qǐng)求時(shí),它發(fā)送的首行被稱為狀態(tài)行。狀態(tài)行包括3位數(shù)字的狀態(tài)碼和對(duì)狀態(tài)碼的簡(jiǎn)單描述。其中,1xx主要是試驗(yàn)性質(zhì)的;2xx表示請(qǐng)求成功;3xx表示在請(qǐng)求在滿足之前應(yīng)進(jìn)一步采取的行動(dòng);4xx表示服務(wù)器無(wú)法滿足要求;5xx服務(wù)器出現(xiàn)錯(cuò)誤。具體可參考書中表3-11狀態(tài)碼表 。10/12/2

20、02238Java Web開發(fā)技術(shù). response的狀態(tài)行當(dāng)服務(wù)器響應(yīng)客戶端3.2.3 out對(duì)象out對(duì)象代表了向客戶端發(fā)送數(shù)據(jù)的對(duì)象,通過(guò)out對(duì)象發(fā)送的內(nèi)容將是瀏覽器需要顯示的內(nèi)容,是文本一級(jí)的??梢酝ㄟ^(guò)out對(duì)象直接向客戶端寫一個(gè)由程序動(dòng)態(tài)生成HTML文件。它是javax.servlet.jsp.JspWriter類的一個(gè)實(shí)例。 JSP允許通過(guò)page指令的buffer屬性調(diào)整out對(duì)象緩存的大小,甚至允許關(guān)閉緩存。 10/12/202239Java Web開發(fā)技術(shù)3.2.3 out對(duì)象out對(duì)象代表了向客戶端發(fā)送數(shù)據(jù)的對(duì)象out對(duì)象重要方法 10/12/202240Java We

21、b開發(fā)技術(shù)out對(duì)象重要方法 10/9/202240Java Web開Out對(duì)象舉例 Out.jsp關(guān)鍵代碼:BufferSize : Available : Used : 因?yàn)樵诿總€(gè)頁(yè)面中都用到out對(duì)象,因此在這兒僅舉一個(gè)例子再展示一下out對(duì)象的主要方法。Out.jsp顯示目前緩沖區(qū)的大小 。運(yùn)行結(jié)果如圖所示 10/12/202241Java Web開發(fā)技術(shù)Out對(duì)象舉例 Out.jsp3.3與屬性作用域有關(guān)的對(duì)象3.3.1 session對(duì)象3.3.2 application對(duì)象3.3.3 pageContext對(duì)象 10/12/202242Java Web開發(fā)技術(shù)3.3與屬性作用域有

22、關(guān)的對(duì)象3.3.1 session對(duì)象13.3.1 session對(duì)象HTTP是無(wú)狀態(tài)(stateless)協(xié)議。客戶端向服務(wù)器發(fā)送一次請(qǐng)求(request),服務(wù)器給與響應(yīng)(response)后連接就關(guān)閉了。因此,當(dāng)下一次連接時(shí),服務(wù)器已經(jīng)沒(méi)有以前的連接信息了。服務(wù)器對(duì)每一個(gè)客戶端請(qǐng)求都沒(méi)有歷史記憶的特點(diǎn)帶來(lái)了一系列的問(wèn)題。如在線商店購(gòu)物時(shí) ,當(dāng)我們把商品加入購(gòu)物車時(shí),服務(wù)器如何才能知道車?yán)镌扔行┦裁???dāng)用戶從選擇商品的頁(yè)面轉(zhuǎn)到輸入信用卡號(hào)和送達(dá)地址的頁(yè)面,服務(wù)器如何才能記住用戶買了些什么?這個(gè)問(wèn)題一般有三種解決方法: 10/12/202243Java Web開發(fā)技術(shù)3.3.1 sessi

23、on對(duì)象HTTP是無(wú)狀態(tài)(statel解決方法:Cookie :利用Cookie對(duì)象來(lái)存儲(chǔ)有關(guān)購(gòu)物會(huì)話的信息,后繼的各個(gè)連接可以查看當(dāng)前Cookie,提取有關(guān)該會(huì)話的完整信息。 重寫URL :把一些標(biāo)識(shí)會(huì)話的數(shù)據(jù)附加到每個(gè)URL的后面,服務(wù)器能夠把該會(huì)話標(biāo)識(shí)和它所保存的會(huì)話數(shù)據(jù)關(guān)聯(lián)起來(lái)。 隱藏表單域 :通過(guò)表單的隱藏域維持會(huì)話HttpSession API :Servlet提供的一種與眾不同的方案 。10/12/202244Java Web開發(fā)技術(shù)解決方法:Cookie :利用Cookie對(duì)象來(lái)存儲(chǔ)有關(guān)購(gòu)物HttpSession API HttpSession API是一個(gè)基于Cookie或者

24、URL重寫機(jī)制的高級(jí)會(huì)話狀態(tài)跟蹤接口。如果瀏覽器支持Cookie,則使用Cookie;如果瀏覽器不支持Cookie或者Cookie功能被關(guān)閉,則自動(dòng)使用URL重寫方法。Servlet開發(fā)者無(wú)需關(guān)心細(xì)節(jié)問(wèn)題,也無(wú)需直接處理Cookie或附加到URL后面的信息 。10/12/202245Java Web開發(fā)技術(shù)HttpSession API HttpSession AP什么是會(huì)話(session)session對(duì)象是javax.servlet.http.HttpSession類的一個(gè)實(shí)例 ,session對(duì)象使同一用戶在訪問(wèn)Web站點(diǎn)時(shí)多個(gè)頁(yè)面間共享信息。一個(gè)客戶訪問(wèn)服務(wù)器時(shí),可能會(huì)在這個(gè)服務(wù)器的

25、幾個(gè)頁(yè)面之間反復(fù)連接,反復(fù)刷新一個(gè)頁(yè)面或不斷向一個(gè)頁(yè)面提交信息等。服務(wù)器完全可以通過(guò)session對(duì)象知道這是同一個(gè)客戶。從一個(gè)客戶打開瀏覽器連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離開這個(gè)服務(wù)器結(jié)束,被稱為一個(gè)會(huì)話。 10/12/202246Java Web開發(fā)技術(shù)什么是會(huì)話(session)session對(duì)象是javax.session對(duì)象的主要方法 10/12/202247Java Web開發(fā)技術(shù)session對(duì)象的主要方法 10/9/202247Java. session對(duì)象的ID標(biāo)識(shí)客戶首次訪問(wèn)服務(wù)器上的JSP頁(yè)面時(shí),JSP引擎產(chǎn)生session對(duì)象,并分配給它一個(gè)String類型的ID,

26、并將其發(fā)送到客戶端存入Cookie中,這樣session對(duì)象和客戶端之間建立了一一對(duì)應(yīng)關(guān)系,客戶在該服務(wù)器不同網(wǎng)頁(yè)間轉(zhuǎn)換或從其他服務(wù)器回到該服務(wù)器時(shí),不分配給客戶新的session,直到客戶關(guān)閉瀏覽器,分配給客戶的session對(duì)象被取消。 10/12/202248Java Web開發(fā)技術(shù). session對(duì)象的ID標(biāo)識(shí)客戶首次訪問(wèn)服Session與ID的一一對(duì)應(yīng)關(guān)系下面例中,客戶在三個(gè)頁(yè)面id1.jsp、id2.jsp和id3.jsp之間進(jìn)行鏈接,只要不關(guān)閉瀏覽器,三個(gè)頁(yè)面的session對(duì)象完全相同,這可以從三個(gè)頁(yè)面中得到的session ID看到。代碼如下,運(yùn)行結(jié)果單擊如圖 id1.js

27、p關(guān)鍵代碼: 您在id1頁(yè)面的session對(duì)象的ID是:?jiǎn)螕舫B接,可到id2頁(yè)面歡迎到id2頁(yè)面來(lái)。 id2.jsp關(guān)鍵代碼:您在id2頁(yè)面中的id號(hào)為:?jiǎn)螕舫B接,可到id3頁(yè)面歡迎到id3頁(yè)面來(lái)。id3.jsp關(guān)鍵代碼: 您在id3頁(yè)面中的session對(duì)象的ID是: 點(diǎn)擊超鏈接,連接到id1頁(yè)面。 歡迎到id1頁(yè)面來(lái)。 10/12/202249Java Web開發(fā)技術(shù)Session與ID的一一對(duì)應(yīng)關(guān)系下面例中,客戶在三個(gè)頁(yè)面i. session對(duì)象和URL重寫上面例子是在客戶端支持Cookie基礎(chǔ)上的。如果客戶端不支持Cookie,服務(wù)器無(wú)法將session ID寫到客戶端。服務(wù)器無(wú)

28、法識(shí)別同一個(gè)客戶端。解決該問(wèn)題的有效方法是URL重寫技術(shù)。 改進(jìn)后id1_1.jsp關(guān)鍵代碼:在id1頁(yè)面中的id號(hào)為:?jiǎn)螕舫B接,可到id2頁(yè)面a href=歡迎到id2_1頁(yè)面來(lái)。id2_1.jsp 和id3_1.jsp在相同位置做相應(yīng)更改即可 。10/12/202250Java Web開發(fā)技術(shù). session對(duì)象和URL重寫上面例子是在. 在會(huì)話對(duì)象中保存數(shù)據(jù)保存和獲得session對(duì)象中的數(shù)據(jù)是JSP頁(yè)面常做的工作,需要使用getAttribute()和setAttribute()方法。例子simplesession.jsp在session對(duì)象中保存數(shù)據(jù)numVisits,這樣服務(wù)器

29、可以告訴客戶他訪問(wèn)該頁(yè)面一共多少次,只要客戶不關(guān)閉瀏覽器。刷新6次后運(yùn)行結(jié)果如圖3-20所示。圖3-20例:example3_17.jsp , Login.jsp , Member.jsp 10/12/202251Java Web開發(fā)技術(shù). 在會(huì)話對(duì)象中保存數(shù)據(jù)保存和獲得sessio. session對(duì)象的生存時(shí)間例example3_18.jsp是一個(gè)猜數(shù)字游戲 10/12/202252Java Web開發(fā)技術(shù). session對(duì)象的生存時(shí)間例exampl. session對(duì)象的新與舊前面已經(jīng)講到,會(huì)話有生存期 ,一般來(lái)說(shuō),下列情況會(huì)使會(huì)話結(jié)束:由于網(wǎng)絡(luò)故障套接字刪除、關(guān)閉瀏覽器、服務(wù)器關(guān)閉重

30、起、會(huì)話超時(shí)和主動(dòng)撤銷會(huì)話。 在第二章已經(jīng)實(shí)現(xiàn)了計(jì)數(shù)器功能,顯示客戶是訪問(wèn)本網(wǎng)站的第多少位客戶。但那時(shí)客戶不斷刷新頁(yè)面時(shí),計(jì)數(shù)器的數(shù)目在增加,這是不正確的。下面的例example3_19.jsp解決了這個(gè)問(wèn)題,對(duì)第二章的例子進(jìn)行改進(jìn) 。10/12/202253Java Web開發(fā)技術(shù). session對(duì)象的新與舊前面已經(jīng)講到,會(huì)3.3.2 application對(duì)象pplication對(duì)象負(fù)責(zé)提供應(yīng)用程序在服務(wù)器中運(yùn)行時(shí)的一些全局信息。服務(wù)器啟動(dòng)時(shí)就創(chuàng)建一個(gè)application對(duì)象,客戶在該服務(wù)器的各個(gè)頁(yè)面之間鏈接時(shí),application對(duì)象都是同一個(gè),直到服務(wù)器關(guān)閉。 表3-14 列出了

31、application對(duì)象的主要方法10/12/202254Java Web開發(fā)技術(shù)3.3.2 application對(duì)象pplication. application對(duì)象的常用方法例:application.jsp ,setAttribute.jsp ,getAttribute.jsp ,example3_20.jsp 10/12/202255Java Web開發(fā)技術(shù). application對(duì)象的常用方法例:a. 用application對(duì)象制作留言板在下例中,客戶在submit.jsp中輸入姓名、留言標(biāo)題和留言內(nèi)容。這些信息提交給messagePane.jsp。該頁(yè)面將客戶信息存入向量,

32、并將向量存放在application對(duì)象中。當(dāng)查看留言板時(shí),showMessage.jsp負(fù)責(zé)從application對(duì)象中取出向量,并遍歷向量顯示其中的所有留言。代碼詳見:submit.jsp ,messagePane.jsp ,showMessage.jsp 10/12/202256Java Web開發(fā)技術(shù). 用application對(duì)象制作留言板在下3.3.3 pageContext對(duì)象pageContext對(duì)象主要用來(lái)管理頁(yè)面的屬性,描述JSP文檔的運(yùn)行環(huán)境。它是頁(yè)面中對(duì)象功能的最大集成者,提供對(duì)所有其他隱含對(duì)象及其屬性的訪問(wèn)。 pageContext對(duì)象的方法詳見表3-15 和表3-

33、16 例scopeexample1.jsp 和scopeexample2.jsp 10/12/202257Java Web開發(fā)技術(shù)3.3.3 pageContext對(duì)象pageContex3.4 與Servlet 有關(guān)的隱含對(duì)象與Servlet 有關(guān)的隱含對(duì)象有兩個(gè): page和config。page對(duì)象表示Servlet本身;config對(duì)象則是存放Servlet的初始參數(shù)值。10/12/202258Java Web開發(fā)技術(shù)3.4 與Servlet 有關(guān)的隱含對(duì)象與Servlet 有3.4.1 page 對(duì)象它是this的同義詞,表示JSP頁(yè)面本身,是Servlet類的一個(gè)實(shí)例,就是轉(zhuǎn)換后的

34、Servlet類,可以調(diào)用Servlet中的任何方法。它實(shí)現(xiàn)了javax.servlet.jsp.HttpJspPage接口。當(dāng)前page對(duì)象用處不大。下面舉一個(gè)簡(jiǎn)單例子PageInfo.jsp,運(yùn)行結(jié)果如圖3-29所示。 圖3-29 PageInfo.jsp運(yùn)行結(jié)果 10/12/202259Java Web開發(fā)技術(shù)3.4.1 page 對(duì)象它是this的同義詞,表示JSP3.4.2 config 對(duì)象config對(duì)象是 javax.servlet.servletConfig 接口的實(shí)例,存儲(chǔ)Servlet配置對(duì)象。其重要方法如下表所示。10/12/202260Java Web開發(fā)技術(shù)3.4.

35、2 config 對(duì)象config對(duì)象是 java3.5 與Error 有關(guān)的隱含對(duì)象這類的隱含對(duì)象只有一個(gè)成員:exception 對(duì)象。 exception對(duì)象代表了JSP文件運(yùn)行時(shí)所產(chǎn)生的異常對(duì)象,目的是在JSP內(nèi)處理錯(cuò)誤。此對(duì)象不能在一般JSP文件中直接使用,而只能在使用了的JSP文件中使用。 例:dividedexample.jsp 10/12/202261Java Web開發(fā)技術(shù)3.5 與Error 有關(guān)的隱含對(duì)象這類的隱含對(duì)象只有一個(gè)成3.6 小 結(jié)本章介紹了JSP頁(yè)面中使用的主要隱含對(duì)象。它們是:request、response、out、session、application、

36、pageContext、config、page、exception。正是由于這些隱含對(duì)象,你可以進(jìn)入JSP頁(yè)面的代碼段,用不著深入了解太多的Servlet API細(xì)節(jié)。 從本質(zhì)上講,JSP的這些隱含對(duì)象其實(shí)都是由特定的Java類所產(chǎn)生的,在服務(wù)器運(yùn)行時(shí)根據(jù)情況自動(dòng)生成,所以如果你有較好的Java基礎(chǔ),可以參考相應(yīng)的類說(shuō)明。 10/12/202262Java Web開發(fā)技術(shù)3.6 小 結(jié)本章介紹了JSP頁(yè)面中使用的主要隱含對(duì)象。它習(xí) 題1編寫JSP頁(yè)面,完成下圖功能:10/12/202263Java Web開發(fā)技術(shù)習(xí) 題1編寫JSP頁(yè)面,完成下圖功能:10/9/2022習(xí)題2編寫JSP頁(yè)面,完成

37、下圖功能,提交請(qǐng)求后顯示相應(yīng)的選中項(xiàng)標(biāo)簽:10/12/202264Java Web開發(fā)技術(shù)習(xí)題2編寫JSP頁(yè)面,完成下圖功能,提交請(qǐng)求后顯示相應(yīng)的選習(xí)題3在aa.jsp中有行代碼:在bb.jsp中有行代碼 :為了使得在bb.jsp中的如上代碼可以顯示”jb-aptech”,可以使用()發(fā)送。A)在aa.jsp中使用把請(qǐng)求提交到bb.jspB)在aa.jsp中使用把頁(yè)面重定向到bb.jspC)在aa.jsp中使用把頁(yè)面重定向到bb.jspD)在aa.jsp中使用包含頁(yè)面bb.jspE)在aa.jsp中使用把頁(yè)面重定向到bb.jsp10/12/202265Java Web開發(fā)技術(shù)習(xí)題3在aa.jsp中有行代碼:10/9/202265Ja習(xí)題4如果在JSP腳本中有如下代碼: int I=10; /1 String str=”jb-aptech”; /2 Vector v=new Vector(); /3 v.add(“jb”); /4 v.add(“aptech”); /5 session.s

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論