版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4章 配合例子源代碼一起使用例子源代碼一起使用Power point 制作:耿祥義 張躍平修訂:王春清普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材JSP內(nèi)置對(duì)象內(nèi)置對(duì)象 JsP主要內(nèi)容主要內(nèi)容request對(duì)象對(duì)象response對(duì)象對(duì)象 session對(duì)象對(duì)象out對(duì)象對(duì)象application對(duì)象對(duì)象難點(diǎn)難點(diǎn)使用使用Tag文件處理數(shù)據(jù)文件處理數(shù)據(jù)理解理解session對(duì)象對(duì)象使用使用session對(duì)象存儲(chǔ)數(shù)據(jù)對(duì)象存儲(chǔ)數(shù)據(jù)關(guān)鍵實(shí)踐關(guān)鍵實(shí)踐使用使用request對(duì)象對(duì)象使用使用response對(duì)象對(duì)象使用使用session對(duì)象對(duì)象第4章導(dǎo)讀章導(dǎo)讀JsP第4章 JSP內(nèi)
2、置對(duì)象內(nèi)置對(duì)象 有些有些成員變量不用聲明成員變量不用聲明就可以在就可以在JSPJSP頁(yè)面的腳本(頁(yè)面的腳本(JavaJava程序片和程序片和JavaJava表達(dá)式)表達(dá)式)中使用,這就是所謂的內(nèi)置對(duì)象。中使用,這就是所謂的內(nèi)置對(duì)象。 內(nèi)置對(duì)象有:內(nèi)置對(duì)象有:resquest、response、session、out 、 application 。 JsPJsPHTTP請(qǐng)求包格式GET hello.htm HTTP/1.1Host:請(qǐng)求方法為GET,獲取指定的資源資源名的URL為hello.htm請(qǐng)求所用協(xié)議及版本HTTP/1.1Host:為請(qǐng)求頭JsPJsP4.1 request對(duì)象對(duì)象 在在
3、JSP中,內(nèi)置對(duì)象中,內(nèi)置對(duì)象request封裝了用戶請(qǐng)求頁(yè)面時(shí)所提封裝了用戶請(qǐng)求頁(yè)面時(shí)所提交的信息,該對(duì)象調(diào)用相應(yīng)的方法可以獲取封裝的信息交的信息,該對(duì)象調(diào)用相應(yīng)的方法可以獲取封裝的信息.即即requestrequest對(duì)象對(duì)象可以獲取用戶提交的信息可以獲取用戶提交的信息。用戶在請(qǐng)求用戶在請(qǐng)求JSPJSP頁(yè)面時(shí),通常會(huì)使用頁(yè)面時(shí),通常會(huì)使用HTMLHTML表單提交信息,表表單提交信息,表單的一般格式是:?jiǎn)蔚囊话愀袷绞牵?FORM method=get|post action= 提交手段提交手段 例如用戶提交信息表單:例如用戶提交信息表單: INPUT TYPE=submit value= n
4、ame=submit tom.jsp頁(yè)面可以使用內(nèi)置頁(yè)面可以使用內(nèi)置request對(duì)象獲得用戶提交的信息對(duì)象獲得用戶提交的信息 request.getParameter(boy);request.getParameter(boy); JsP4.1.1 4.1.1 獲取用戶提交的信息獲取用戶提交的信息 request request對(duì)象獲取用戶提交信息的最常用的方法對(duì)象獲取用戶提交信息的最常用的方法是是 String String getParameter(String s)getParameter(String s). . 返回類(lèi)型:返回類(lèi)型:StringString參數(shù)參數(shù): :字段名,即字
5、段名,即FormForm子標(biāo)記的子標(biāo)記的namename的屬性值。的屬性值。 例例4-1 , 4-2 P62 String textContent = request.getParameter(boy);JsP4.1.2 4.1.2 處理漢字信息處理漢字信息 當(dāng)用當(dāng)用requestrequest對(duì)象對(duì)象獲取用戶提交的漢字字符時(shí)獲取用戶提交的漢字字符時(shí),會(huì)出會(huì)出現(xiàn)亂碼問(wèn)題現(xiàn)亂碼問(wèn)題,所以對(duì)含有漢字字符的信息必須進(jìn)行特所以對(duì)含有漢字字符的信息必須進(jìn)行特殊的處理。首先殊的處理。首先,將獲取的字符串用將獲取的字符串用ISO-8859-1ISO-8859-1進(jìn)行進(jìn)行編碼,并將編碼存放到一個(gè)字節(jié)數(shù)組中,然
6、后再將編碼,并將編碼存放到一個(gè)字節(jié)數(shù)組中,然后再將這個(gè)數(shù)組轉(zhuǎn)化為字符串對(duì)象即可這個(gè)數(shù)組轉(zhuǎn)化為字符串對(duì)象即可.如下所示:如下所示:String str=request.getParameter(girl);String str=request.getParameter(girl);byte b=str.getBytes(ISO-8859-1);byte b=str.getBytes(ISO-8859-1); str=new String(b);str=new String(b); 例例4-3 P64JsP4.1.3 4.1.3 常用方法舉例常用方法舉例 可以用內(nèi)置對(duì)象可以用內(nèi)置對(duì)象request
7、request對(duì)象來(lái)獲取請(qǐng)求所提交的各類(lèi)信對(duì)象來(lái)獲取請(qǐng)求所提交的各類(lèi)信息,息,requestrequest對(duì)象的常用方法如下:對(duì)象的常用方法如下: ngetProtocol()getProtocol():獲取請(qǐng)求使用的通信協(xié)議,如獲取請(qǐng)求使用的通信協(xié)議,如http/1.1http/1.1等。等。ngetServletPath()getServletPath():獲取請(qǐng)求的:獲取請(qǐng)求的JSPJSP頁(yè)面所在的目錄。頁(yè)面所在的目錄。ngetContentLength()getContentLength():獲?。韩@取HTTPHTTP請(qǐng)求的長(zhǎng)度。請(qǐng)求的長(zhǎng)度。ngetMethod()getMethod(
8、):獲取表單提交信息的方式,如:獲取表單提交信息的方式,如POSTPOST或或GETGET。ngetHeader(String s)getHeader(String s):獲取請(qǐng)求中頭的值。獲取請(qǐng)求中頭的值。ngetHeaderNames()getHeaderNames():獲取頭名字的一個(gè)枚舉。:獲取頭名字的一個(gè)枚舉。ngetHeaders(String s)getHeaders(String s):獲取頭的全部值的一個(gè)枚舉。獲取頭的全部值的一個(gè)枚舉。ngetRemoteAddr()getRemoteAddr():獲取客戶的:獲取客戶的IPIP地址。地址。ngetRemoteHost()ge
9、tRemoteHost():獲取客戶機(jī)的名稱獲取客戶機(jī)的名稱( (如果獲取不到,就獲取如果獲取不到,就獲取IPIP地址地址).).ngetServerName()getServerName():獲取服務(wù)器的名稱。獲取服務(wù)器的名稱。ngetServerPort()getServerPort():獲取服務(wù)器的端口號(hào)。獲取服務(wù)器的端口號(hào)。ngetParameterNames()getParameterNames():獲取表單提交的信息體部分中獲取表單提交的信息體部分中namename參數(shù)值的一個(gè)枚舉參數(shù)值的一個(gè)枚舉. . 例例4-4 P66JsP4.1.4 4.1.4 使用使用TagTag文件處理有
10、關(guān)數(shù)據(jù)文件處理有關(guān)數(shù)據(jù) JSP JSP頁(yè)面使用頁(yè)面使用requestrequest對(duì)象獲取用戶提交的數(shù)據(jù),對(duì)象獲取用戶提交的數(shù)據(jù),然后使用然后使用TagTag標(biāo)記調(diào)用標(biāo)記調(diào)用TagTag文件,并將必要的數(shù)據(jù)文件,并將必要的數(shù)據(jù)傳遞給傳遞給TagTag文件。文件。TagTag文件負(fù)責(zé)處理數(shù)據(jù),根據(jù)需文件負(fù)責(zé)處理數(shù)據(jù),根據(jù)需要將處理結(jié)果顯示給用戶或返回給調(diào)用它的要將處理結(jié)果顯示給用戶或返回給調(diào)用它的JSPJSP頁(yè)頁(yè)面。面。 例例4-5 P68example4_5.jsp 用戶提交三邊用戶提交三邊 get.jsp調(diào)用調(diào)用tagtag并傳遞三邊并傳遞三邊 Computer.tag 計(jì)算面積并返回結(jié)果計(jì)
11、算面積并返回結(jié)果 JsPRev: Tag 標(biāo)記的定義nnnnnJsPRev: Tag標(biāo)記的使用nnn ncomputer:Triangle a= b= c=/JsP4.1.5 4.1.5 處理處理HTMLHTML標(biāo)記標(biāo)記 JSP JSP頁(yè)面可以含有頁(yè)面可以含有HTMLHTML標(biāo)記,當(dāng)用戶通過(guò)瀏覽標(biāo)記,當(dāng)用戶通過(guò)瀏覽器請(qǐng)求一個(gè)器請(qǐng)求一個(gè)JSPJSP頁(yè)面時(shí),頁(yè)面時(shí),TomcatTomcat服務(wù)器將該服務(wù)器將該JSPJSP頁(yè)頁(yè)面中的面中的HTMLHTML標(biāo)記直接發(fā)送到用戶的瀏覽器,由用標(biāo)記直接發(fā)送到用戶的瀏覽器,由用戶的瀏覽器負(fù)責(zé)執(zhí)行這些戶的瀏覽器負(fù)責(zé)執(zhí)行這些HTMLHTML標(biāo)記。而標(biāo)記。而JSPJ
12、SP頁(yè)面中頁(yè)面中的變量聲明、程序片以及表達(dá)式由的變量聲明、程序片以及表達(dá)式由TomcatTomcat服務(wù)器服務(wù)器處理后,再將有關(guān)的結(jié)果用文本方式發(fā)送到用戶處理后,再將有關(guān)的結(jié)果用文本方式發(fā)送到用戶端的瀏覽器。端的瀏覽器。 HTMLHTML是是Hypertext Marked LanguageHypertext Marked Language的縮寫(xiě),的縮寫(xiě),即超文本標(biāo)記語(yǔ)言。即超文本標(biāo)記語(yǔ)言。 JsP4.1.5 4.1.5 處理處理HTMLHTML標(biāo)記標(biāo)記_ _ 標(biāo)記標(biāo)記 標(biāo)記被習(xí)慣地稱作表單,用戶經(jīng)常需要使用表單提交數(shù)據(jù)。標(biāo)記被習(xí)慣地稱作表單,用戶經(jīng)常需要使用表單提交數(shù)據(jù)。表單的一般格式是:表
13、單的一般格式是:FORM method= get| post action= 數(shù)據(jù)提交手段部分?jǐn)?shù)據(jù)提交手段部分 其中其中Form 是表單標(biāo)記,其中的是表單標(biāo)記,其中的methodmethod屬性取值屬性取值getget或或postpost。 提交手段包括:通過(guò)文本框、列表、文本區(qū)等,例如:提交手段包括:通過(guò)文本框、列表、文本區(qū)等,例如: INPUT Select Option TextArea JsP4.1.5 4.1.5 處理處理HTMLHTML標(biāo)記標(biāo)記_ _標(biāo)記標(biāo)記 表單標(biāo)記表單標(biāo)記將將標(biāo)記作為子標(biāo)記來(lái)指定表單中數(shù)據(jù)的輸入方式標(biāo)記作為子標(biāo)記來(lái)指定表單中數(shù)據(jù)的輸入方式以及表單的提交鍵。以及表
14、單的提交鍵。標(biāo)記中的標(biāo)記中的typetype屬性可以指定輸入方式的屬性可以指定輸入方式的GUIGUI對(duì)象,對(duì)象,namename屬性用來(lái)指定這個(gè)屬性用來(lái)指定這個(gè)GUIGUI對(duì)象的名稱。對(duì)象的名稱。標(biāo)記的基本格式:標(biāo)記的基本格式:Input type= 服務(wù)器通過(guò)屬性服務(wù)器通過(guò)屬性namename指定的名字來(lái)獲取指定的名字來(lái)獲取“輸入對(duì)象的輸入對(duì)象的GUIGUI類(lèi)型類(lèi)型”中提中提交的數(shù)據(jù)。交的數(shù)據(jù)?!拜斎雽?duì)象的輸入對(duì)象的GUIGUI類(lèi)型類(lèi)型”可以是:可以是:texttext(文本框)、(文本框)、checkboxcheckbox(檢查框)、(檢查框)、submitsubmit(提交鍵)等。(提交
15、鍵)等。n文本框文本框text:text: n單選框單選框radio:radio: n復(fù)選框復(fù)選框checkbox :checkbox :n口令框口令框password:password:n隱藏隱藏hidden:hidden: n提交鍵提交鍵submit:submit:Input type=submit name=me value= size=12 n重置鍵:重置鍵:reset: reset: 例例4-6 P72JsP4.1.5 4.1.5 處理處理HTMLHTML標(biāo)記標(biāo)記_ _、格式格式 下拉式列表和滾動(dòng)列表通過(guò)下拉式列表和滾動(dòng)列表通過(guò)和和標(biāo)記來(lái)定義?;靖袷綐?biāo)記來(lái)定義?;靖袷綖椋簽椋?(
16、1 1)下拉列表)下拉列表 你選了小貓你選了小貓 你選了小狗你選了小狗 (2 2)滾動(dòng)列表)滾動(dòng)列表: :在在SelectSelect中指定中指定sizesize屬性的值就變成滾動(dòng)列表,屬性的值就變成滾動(dòng)列表,sizesize的值是滾動(dòng)列表的可的值是滾動(dòng)列表的可見(jiàn)行的個(gè)數(shù)。見(jiàn)行的個(gè)數(shù)。 計(jì)算計(jì)算1 1到到n n的連續(xù)和的連續(xù)和 計(jì)算計(jì)算1 1到到n n的平方和的平方和 例例4-7 P74JsP4.1.5 4.1.5 處理處理HTMLHTML標(biāo)記標(biāo)記_ _格式格式 標(biāo)記在表單中指定一個(gè)能輸入多行文本的文本區(qū)標(biāo)記在表單中指定一個(gè)能輸入多行文本的文本區(qū)域。域?;靖袷綖椋夯靖袷綖椋篔sP4.1.5
17、 4.1.5 處理處理HTMLHTML標(biāo)記標(biāo)記_ _表格表格 表格由表格由、標(biāo)記定義。標(biāo)記定義。一般格式一般格式: tr width= th width= 單元格中的數(shù)據(jù)單元格中的數(shù)據(jù) td width= 單元格中的數(shù)據(jù)單元格中的數(shù)據(jù) 其中其中 定義表格的一個(gè)行,定義表格的一個(gè)行,或或標(biāo)記定義這一行中的標(biāo)記定義這一行中的表格單元,二者的區(qū)別是:表格單元,二者的區(qū)別是:定義的單元加重顯示,定義的單元加重顯示,稱做普通單稱做普通單元,不加重顯示。一行中的加重單元和普通單元可以交替出現(xiàn),也可以元,不加重顯示。一行中的加重單元和普通單元可以交替出現(xiàn),也可以全是加重單元或普通單元。全是加重單元或普通單元
18、。中增加選項(xiàng)中增加選項(xiàng)border可指明該表格是否帶有邊框??芍该髟摫砀袷欠駧в羞吙颉?例例4-8 P76JsP4.1.5 4.1.5 處理處理HTMLHTML標(biāo)記標(biāo)記_ _與與標(biāo)記標(biāo)記 使用使用或或標(biāo)記都可以顯示一副圖象,標(biāo)記的基標(biāo)記都可以顯示一副圖象,標(biāo)記的基本格式為:本格式為: img src=URL 描述文字描述文字 image src= URL 描述文字描述文字 如果如果圖像文件和當(dāng)前頁(yè)面在同一圖像文件和當(dāng)前頁(yè)面在同一Web服務(wù)目錄中,服務(wù)目錄中,“圖像的圖像的文件的文件的URL”就是該圖像文件的名字;就是該圖像文件的名字;如果如果圖像文件在當(dāng)前圖像文件在當(dāng)前Web服務(wù)目錄一個(gè)子目錄
19、中,比如服務(wù)目錄一個(gè)子目錄中,比如picture子目錄中,那么子目錄中,那么“圖像文件的圖像文件的URL”就是就是“picture/圖像文件的名字圖像文件的名字”. 標(biāo)記中可以使用標(biāo)記中可以使用width和和height屬性指定被顯示的圖像的寬屬性指定被顯示的圖像的寬為和高,如果省略為和高,如果省略width和和height屬性,標(biāo)記將按圖像的原始屬性,標(biāo)記將按圖像的原始寬度和高度來(lái)顯示圖像。寬度和高度來(lái)顯示圖像。 JsP4.1.5 4.1.5 處理處理HTMLHTML標(biāo)記標(biāo)記_ _標(biāo)記標(biāo)記 使用使用標(biāo)記可以播放音樂(lè)和視頻標(biāo)記可以播放音樂(lè)和視頻,當(dāng)瀏覽器執(zhí)行該標(biāo)記當(dāng)瀏覽器執(zhí)行該標(biāo)記時(shí)時(shí),會(huì)把瀏
20、覽器所在機(jī)器上的默認(rèn)播放器嵌入到瀏覽器中,以會(huì)把瀏覽器所在機(jī)器上的默認(rèn)播放器嵌入到瀏覽器中,以便播放音樂(lè)或視頻文件。便播放音樂(lè)或視頻文件。標(biāo)記的基本格式為:標(biāo)記的基本格式為: embed src=URL 描述文字描述文字 如果音樂(lè)或視頻文件和當(dāng)前頁(yè)面在同一Web服務(wù)目錄中,標(biāo)記中src屬性的值就是該文件的名字;如果視頻文件在當(dāng)前Web服務(wù)目錄一個(gè)子目錄中,比如avi子目錄中,那么標(biāo)記中src屬性的值就是“avi/視頻文件的名字”。 標(biāo)記中經(jīng)常使用的屬性及取值如下:標(biāo)記中經(jīng)常使用的屬性及取值如下:autostart屬性屬性的值用來(lái)指定音樂(lè)或視頻文件傳送完畢后是否立刻播放的值用來(lái)指定音樂(lè)或視頻文件
21、傳送完畢后是否立刻播放, autostart取值取值 “true”或或“false”,該屬性的默認(rèn)值是,該屬性的默認(rèn)值是false。loop屬性屬性的取值為正整數(shù)的取值為正整數(shù),該屬性的值用來(lái)指定音樂(lè)或視頻文件重復(fù)播放該屬性的值用來(lái)指定音樂(lè)或視頻文件重復(fù)播放的次數(shù)。的次數(shù)。例例4-9 P77JsP4.2 response對(duì)象對(duì)象 可以用可以用responseresponse對(duì)象對(duì)象對(duì)用戶的請(qǐng)求做出動(dòng)態(tài)響對(duì)用戶的請(qǐng)求做出動(dòng)態(tài)響應(yīng),向用戶端發(fā)送數(shù)據(jù)。應(yīng),向用戶端發(fā)送數(shù)據(jù)。 1. 1.動(dòng)態(tài)響應(yīng)動(dòng)態(tài)響應(yīng)contentTypecontentType屬性屬性 2. 2.動(dòng)態(tài)設(shè)置動(dòng)態(tài)設(shè)置HTTPHTTP響應(yīng)
22、包的頭值。響應(yīng)包的頭值。 3. 3.可以使用可以使用response.sendRedirect(url)response.sendRedirect(url)重重定向定向 4. 4.可以自己設(shè)置狀態(tài)代碼。可以自己設(shè)置狀態(tài)代碼。 JsPJsP.1 動(dòng)態(tài)響應(yīng)動(dòng)態(tài)響應(yīng)contentTypecontentType屬性屬性 由于由于pagepage指令只能為指令只能為contentTypecontentType屬性指定一個(gè)值來(lái)決定響屬性指定一個(gè)值來(lái)決定響應(yīng)的應(yīng)的MIMEMIME類(lèi)型。類(lèi)型。 如果想動(dòng)態(tài)地改變這個(gè)屬性的值來(lái)響應(yīng)用戶如果想動(dòng)態(tài)地改變這個(gè)屬性的值來(lái)響應(yīng)用戶,就需要使用就需要使用r
23、esponseresponse對(duì)象對(duì)象的的setContentType(String s)setContentType(String s)方法方法來(lái)改變來(lái)改變contentTypecontentType的屬性的屬性值。值。 public void setContentType(String s);public void setContentType(String s);方法動(dòng)態(tài)設(shè)置響應(yīng)的方法動(dòng)態(tài)設(shè)置響應(yīng)的MIME類(lèi)型,參數(shù)類(lèi)型,參數(shù)s可取可取: text/htmltext/html、text/plaintext/plain、image/gifimage/gif、image/x-xbitmapi
24、mage/x-xbitmap、 image/jpegimage/jpeg、image/pjpegimage/pjpeg、application/x-shockwave-flashapplication/x-shockwave-flash、 application/vnd.ms-powerpointapplication/vnd.ms-powerpoint、 application/vnd.ms-excelapplication/vnd.ms-excel、 application/mswordapplication/msword。 例例4-10, 4-11 P78JsPn當(dāng)用戶請(qǐng)求一個(gè)JSP頁(yè)面
25、時(shí),Tomcat服務(wù)器將此JSP頁(yè)面翻譯成java源代碼,然后編譯成字節(jié)碼后執(zhí)行,響應(yīng)用戶的請(qǐng)求。n如果希望用戶使用瀏覽器解析并執(zhí)行所收到的信息,則應(yīng)設(shè)置contentType值如下:n% page contentType=;charset=GB2312 %n如果希望瀏覽器啟用本地的msword程序解析并執(zhí)行所收到的信息,則應(yīng)設(shè)置contentType值如下:n% page contentType= % ncontentTypecontentType屬性指定一個(gè)值來(lái)決定屬性指定一個(gè)值來(lái)決定響應(yīng)的響應(yīng)的MIMEMIME類(lèi)型類(lèi)型。因此,瀏。因此,瀏覽器依據(jù)覽器依據(jù)MIMEMIME類(lèi)型確定用類(lèi)型確定
26、用哪個(gè)程序哪個(gè)程序進(jìn)行處理。進(jìn)行處理。SJPRevRev page page 指令指令_ _contentType屬性屬性 contentType 屬性值確定屬性值確定JSP頁(yè)面響應(yīng)的頁(yè)面響應(yīng)的MIME(Multipurpose Internet Mail Extention)類(lèi)型和)類(lèi)型和JSP頁(yè)頁(yè)面字符的編碼。面字符的編碼。例如例如: : 注:注:不允許兩次使用不允許兩次使用page 指令給指令給contentType屬性指定屬性指定不同的屬性值不同的屬性值 . 例例2-8 P21JsP4.2.2 response4.2.2 response的的HTTPHTTP文件頭文件頭 respons
27、e對(duì)象可以使用方法:對(duì)象可以使用方法: addHeader(String head,String value);addHeader(String head,String value);或使用方法:或使用方法: setHeader(String head ,String value);setHeader(String head ,String value);動(dòng)態(tài)添加新的響應(yīng)頭和頭的值,并將這些頭發(fā)送給用戶的瀏動(dòng)態(tài)添加新的響應(yīng)頭和頭的值,并將這些頭發(fā)送給用戶的瀏覽器。如果添加的頭已經(jīng)存在,則先前的頭被覆蓋。覽器。如果添加的頭已經(jīng)存在,則先前的頭被覆蓋。 請(qǐng)求頭:請(qǐng)求頭:Post example:j
28、sp HTTP.1.1Host:localhost:8080Accept-encoding:gzip,deflateJsPn例例4-12 P80nresponse 響應(yīng)對(duì)象添加一個(gè)響應(yīng)頭:nrefresh:5n用戶收到此頁(yè)面后,將在5秒鐘后再次刷新頁(yè)面,導(dǎo)致網(wǎng)頁(yè)每5秒刷新一次。nresponse.addHeader(String head,String value)nresponse.addHeader(refresh,5);JsP4.2.3 response4.2.3 response重定向重定向 在某些情況下,在某些情況下,JSP引擎在響應(yīng)用戶時(shí),可能需要將用戶引擎在響應(yīng)用戶時(shí),可能需要將
29、用戶重新引導(dǎo)至重新引導(dǎo)至另一個(gè)頁(yè)面。另一個(gè)頁(yè)面。 例如,如果用戶輸入的表單信息不完整,就會(huì)再次被引導(dǎo)例如,如果用戶輸入的表單信息不完整,就會(huì)再次被引導(dǎo)到該表單的輸入頁(yè)面。到該表單的輸入頁(yè)面。使用使用response對(duì)象的對(duì)象的sendRedirect(URL url)方法方法實(shí)現(xiàn)用戶的重定實(shí)現(xiàn)用戶的重定向。向。 例例4-13 P81JsP4.2.4 4.2.4 responseresponse的狀態(tài)行的狀態(tài)行 當(dāng)當(dāng)JSP引擎對(duì)用戶請(qǐng)求進(jìn)行響應(yīng)時(shí),它發(fā)送的首行稱做狀態(tài)引擎對(duì)用戶請(qǐng)求進(jìn)行響應(yīng)時(shí),它發(fā)送的首行稱做狀態(tài)行。行。 狀態(tài)行包括狀態(tài)行包括3位數(shù)字的狀態(tài)代碼位數(shù)字的狀態(tài)代碼和對(duì)狀態(tài)代碼的描述(
30、稱做和對(duì)狀態(tài)代碼的描述(稱做原因短語(yǔ))。原因短語(yǔ))。參考表參考表4-1 狀態(tài)代碼表狀態(tài)代碼表例例4-14 P82 可以獲取請(qǐng)求頁(yè)面的可以獲取請(qǐng)求頁(yè)面的URL,判斷是否允許訪問(wèn)。,判斷是否允許訪問(wèn)。 request.getHeader(referer);JsPnwebapps-ch3n other.jspnwebapps-ch4n sameWebOne.jspn sameWebTwo.jsp防盜鏈JsP4.3 sessionsession對(duì)象對(duì)象 HTTPHTTP協(xié)議是一種無(wú)狀態(tài)協(xié)議。一個(gè)用戶向服務(wù)協(xié)議是一種無(wú)狀態(tài)協(xié)議。一個(gè)用戶向服務(wù)器發(fā)出請(qǐng)求(器發(fā)出請(qǐng)求(requestrequest),然后服
31、務(wù)器返回響應(yīng)),然后服務(wù)器返回響應(yīng)(responseresponse),連接就被關(guān)閉了,在服務(wù)器端不保),連接就被關(guān)閉了,在服務(wù)器端不保留連接的有關(guān)信息,因此當(dāng)下一次連接時(shí),服務(wù)器留連接的有關(guān)信息,因此當(dāng)下一次連接時(shí),服務(wù)器已沒(méi)有以前的連接信息了,無(wú)法判斷這一次連接和已沒(méi)有以前的連接信息了,無(wú)法判斷這一次連接和以前的連接是否屬于同一用戶。以前的連接是否屬于同一用戶。 內(nèi)置內(nèi)置session(session(會(huì)話會(huì)話) )對(duì)象對(duì)象記錄記錄有關(guān)連接的有關(guān)連接的信息信息. .由由TomcatTomcat服務(wù)器負(fù)責(zé)創(chuàng)建服務(wù)器負(fù)責(zé)創(chuàng)建。JsP會(huì)話的定義n描述:n從一個(gè)用戶打開(kāi)瀏覽器鏈接到服務(wù)器的某個(gè)We
32、b服務(wù)目錄,到用戶關(guān)閉瀏覽器離開(kāi)服務(wù)器稱為一個(gè)會(huì)話。JsP4.3.1 session4.3.1 session對(duì)象的對(duì)象的IDID session session對(duì)象被分配了一個(gè)對(duì)象被分配了一個(gè)StringString類(lèi)型的類(lèi)型的IDID,TomcatTomcat服務(wù)器將服務(wù)器將IDID發(fā)送到客戶端,存放在客戶的發(fā)送到客戶端,存放在客戶的CookieCookie中。中。 同一用戶在同一同一用戶在同一WebWeb服務(wù)目錄中的各個(gè)頁(yè)面的服務(wù)目錄中的各個(gè)頁(yè)面的sessionsession是相同的是相同的. . 不同用戶的不同用戶的sessionsession對(duì)象互不相同,具有不同的對(duì)象互不相同,具有
33、不同的ID.ID. 例例4-15 P86JsP4.3.2 session4.3.2 session對(duì)象與對(duì)象與URLURL重寫(xiě)重寫(xiě) 如果用戶端不支持如果用戶端不支持CookieCookie,那么用戶在不同網(wǎng)頁(yè)之間的,那么用戶在不同網(wǎng)頁(yè)之間的sessionsession對(duì)象對(duì)象可能可能是互不相同的,因?yàn)槿绻?wù)器無(wú)法將是互不相同的,因?yàn)槿绻?wù)器無(wú)法將IdId存放到用戶端,就不能建立存放到用戶端,就不能建立sessionsession對(duì)象和用戶的一一對(duì)應(yīng)對(duì)象和用戶的一一對(duì)應(yīng)關(guān)系。關(guān)系。 可以通過(guò)可以通過(guò)URLURL重寫(xiě)來(lái)實(shí)現(xiàn)重寫(xiě)來(lái)實(shí)現(xiàn)sessionsession對(duì)象的惟一性。所謂對(duì)象的惟一性。所
34、謂URLURL重寫(xiě)重寫(xiě),就是當(dāng)用戶從一個(gè)頁(yè)面重新鏈接到另一個(gè)頁(yè)面時(shí),通,就是當(dāng)用戶從一個(gè)頁(yè)面重新鏈接到另一個(gè)頁(yè)面時(shí),通過(guò)向這個(gè)新的過(guò)向這個(gè)新的URLURL添加參數(shù),把添加參數(shù),把sessionsession對(duì)象的對(duì)象的IdId傳帶過(guò)去,傳帶過(guò)去,這樣就可以保障用戶在該網(wǎng)站各個(gè)頁(yè)面中的這樣就可以保障用戶在該網(wǎng)站各個(gè)頁(yè)面中的sessionsession對(duì)象是對(duì)象是完全相同的??梢允褂猛耆嗤?。可以使用responseresponse對(duì)象調(diào)用對(duì)象調(diào)用encodeURL()encodeURL()或或encodeRedirectURL()encodeRedirectURL()方法實(shí)現(xiàn)方法實(shí)現(xiàn)URLUR
35、L重寫(xiě)重寫(xiě). . 例例4-16 P87JsPnresponse 內(nèi)置對(duì)象npublic String encodeURL(String url); n 對(duì)包含 session ID的URL進(jìn)行編碼。如果不需要編碼,就直接返回這個(gè) URL。Servlet 引擎必須提供 URL編碼方法,因?yàn)樵谟行┣闆r下,我們將不得不重寫(xiě) URL,例如,在響應(yīng) 對(duì)應(yīng)的請(qǐng)求中包含一個(gè)有效的 session,但是這個(gè) session 不能被非 URL 的(例如 cookie)的手段來(lái)維持。 n 所有提供給 Servlet 的 URL都應(yīng)通過(guò)這個(gè)方法運(yùn)行,這樣才能確保會(huì)話跟蹤能夠在所有n瀏覽器中正常運(yùn)行。 JsP4.3.
36、3 session4.3.3 session對(duì)象存儲(chǔ)數(shù)據(jù)對(duì)象存儲(chǔ)數(shù)據(jù) sessionsession對(duì)象使用下列方法處理數(shù)據(jù):對(duì)象使用下列方法處理數(shù)據(jù): (1(1) public void setAttribute(String key, Object obj) public void setAttribute(String key, Object obj) sessionsession對(duì)象可以調(diào)用該方法將參數(shù)對(duì)象可以調(diào)用該方法將參數(shù)ObjectObject指定的對(duì)象指定的對(duì)象objobj添加到添加到sessionsession對(duì)對(duì)象中,并為添加的對(duì)象指定了一個(gè)索引關(guān)鍵字,如果添加的兩個(gè)對(duì)象的關(guān)
37、鍵字象中,并為添加的對(duì)象指定了一個(gè)索引關(guān)鍵字,如果添加的兩個(gè)對(duì)象的關(guān)鍵字相同,則先前添加的對(duì)象被清除。相同,則先前添加的對(duì)象被清除。(2 2)public Object getAttibute(String keypublic Object getAttibute(String key) ) 獲取獲取sessionsession對(duì)象含有的關(guān)鍵字是對(duì)象含有的關(guān)鍵字是keykey的對(duì)象。由于任何對(duì)象都可以添加到的對(duì)象。由于任何對(duì)象都可以添加到sessionsession對(duì)象中,因此用該方法取回對(duì)象時(shí),應(yīng)強(qiáng)制轉(zhuǎn)化為原來(lái)的類(lèi)型。對(duì)象中,因此用該方法取回對(duì)象時(shí),應(yīng)強(qiáng)制轉(zhuǎn)化為原來(lái)的類(lèi)型。(3 3)publ
38、ic Enumeration getAttributeNames()public Enumeration getAttributeNames() s e s s i o ns e s s i o n 對(duì) 象 調(diào) 用 該 方 法 產(chǎn) 生 一 個(gè) 枚 舉 對(duì) 象 , 該 枚 舉 對(duì) 象 使 用對(duì) 象 調(diào) 用 該 方 法 產(chǎn) 生 一 個(gè) 枚 舉 對(duì) 象 , 該 枚 舉 對(duì) 象 使 用nextElemets()nextElemets()遍歷遍歷sessionsession中的各個(gè)對(duì)象所對(duì)應(yīng)的關(guān)鍵字。中的各個(gè)對(duì)象所對(duì)應(yīng)的關(guān)鍵字。(4 4)public long getCreationTime() pub
39、lic long getCreationTime() sessionsession對(duì)象調(diào)用該方法可以獲取該對(duì)象創(chuàng)建的時(shí)間,單位是毫秒。對(duì)象調(diào)用該方法可以獲取該對(duì)象創(chuàng)建的時(shí)間,單位是毫秒。 (5 5)public void removeAttribute(String name)public void removeAttribute(String name) sessionsession對(duì)象調(diào)用該方法移掉關(guān)鍵字對(duì)象調(diào)用該方法移掉關(guān)鍵字keykey對(duì)應(yīng)的對(duì)象對(duì)應(yīng)的對(duì)象. . 例例4-17 P89JsP4.3.4 4.3.4 在在TagTag文件中使用文件中使用sessionsession對(duì)象對(duì)象
40、JSP JSP頁(yè)面通過(guò)調(diào)用頁(yè)面通過(guò)調(diào)用TagTag文件可以實(shí)現(xiàn)代碼的復(fù)用,文件可以實(shí)現(xiàn)代碼的復(fù)用,那么在反復(fù)調(diào)用那么在反復(fù)調(diào)用TagTag文件時(shí),文件時(shí),TagTag文件就可以對(duì)文件就可以對(duì)sessionsession對(duì)象中存儲(chǔ)的數(shù)據(jù)進(jìn)行處理,并將必要對(duì)象中存儲(chǔ)的數(shù)據(jù)進(jìn)行處理,并將必要的結(jié)果返回給的結(jié)果返回給JSPJSP頁(yè)面。頁(yè)面。 例例4-18 P90JsP4.3.5 session4.3.5 session對(duì)象的生存期限對(duì)象的生存期限 sessionsession對(duì)象對(duì)象的生存期限依賴的生存期限依賴:客戶是否關(guān)閉瀏覽器??蛻羰欠耜P(guān)閉瀏覽器。2. session對(duì)象是否調(diào)用對(duì)象是否調(diào)用inv
41、alidate()方法使方法使session無(wú)效。無(wú)效。3. session對(duì)象是否達(dá)到設(shè)置的最長(zhǎng)對(duì)象是否達(dá)到設(shè)置的最長(zhǎng)“發(fā)呆發(fā)呆”時(shí)間時(shí)間 例例4-19 P92JsP4.3.6 4.3.6 使用使用sessionsession設(shè)置時(shí)間間隔設(shè)置時(shí)間間隔 為了限制用戶在很短的時(shí)間間隔內(nèi)不斷地使用為了限制用戶在很短的時(shí)間間隔內(nèi)不斷地使用某頁(yè)面所提供的某種功能,而影響其他用戶使用該某頁(yè)面所提供的某種功能,而影響其他用戶使用該頁(yè)面所提供的功能,因此我們可以利用頁(yè)面所提供的功能,因此我們可以利用用戶的用戶的sessionsession來(lái)設(shè)置用戶使用當(dāng)前頁(yè)面所提供功能的間來(lái)設(shè)置用戶使用當(dāng)前頁(yè)面所提供功能的
42、間隔時(shí)間,從而限制該用戶等待若干隔時(shí)間,從而限制該用戶等待若干“時(shí)間時(shí)間”后,再后,再次使用該頁(yè)面所提供的功能。次使用該頁(yè)面所提供的功能。 例例4-20 P93JsP4.3.7 4.3.7 計(jì)數(shù)器計(jì)數(shù)器 使用使用sessionsession實(shí)現(xiàn)計(jì)數(shù)器的步驟是:當(dāng)一個(gè)用戶實(shí)現(xiàn)計(jì)數(shù)器的步驟是:當(dāng)一個(gè)用戶請(qǐng)求請(qǐng)求WebWeb服務(wù)目錄下的任何一個(gè)服務(wù)目錄下的任何一個(gè)JSPJSP頁(yè)面時(shí),首先檢頁(yè)面時(shí),首先檢查該用戶的查該用戶的sessionsession對(duì)象中是否已經(jīng)有計(jì)數(shù),如果對(duì)象中是否已經(jīng)有計(jì)數(shù),如果沒(méi)有計(jì)數(shù),立刻將當(dāng)前的計(jì)數(shù)增沒(méi)有計(jì)數(shù),立刻將當(dāng)前的計(jì)數(shù)增1 1,并將計(jì)數(shù)存到,并將計(jì)數(shù)存到用戶的用戶
43、的sessionsession中,否則不改變當(dāng)前的計(jì)數(shù)。中,否則不改變當(dāng)前的計(jì)數(shù)。 例例4-21 P95JsP4.4 out對(duì)象對(duì)象 out out對(duì)象是一個(gè)輸出流對(duì)象是一個(gè)輸出流, ,用來(lái)向用戶端輸出數(shù)據(jù)。用來(lái)向用戶端輸出數(shù)據(jù)。 outout對(duì)象可調(diào)用如下的方法用于各種數(shù)據(jù)的輸出,對(duì)象可調(diào)用如下的方法用于各種數(shù)據(jù)的輸出,nout.print(Boolean)out.print(Boolean),out.println(Boolean)out.println(Boolean) 用于輸出一個(gè)布爾值用于輸出一個(gè)布爾值。nout.print(char)out.print(char),out.prin
44、tln(char)out.println(char)輸出一個(gè)字符。輸出一個(gè)字符。nout.print(double)out.print(double),out.println(double)out.println(double)輸出一個(gè)雙精度的浮點(diǎn)數(shù)。輸出一個(gè)雙精度的浮點(diǎn)數(shù)。nout.print(float)out.print(float),out.println(float)out.println(float) 用于輸出一個(gè)單精度的浮點(diǎn)數(shù)。用于輸出一個(gè)單精度的浮點(diǎn)數(shù)。nout.print(long)out.print(long),out.println(long)out.println(long)輸出一個(gè)長(zhǎng)整型數(shù)據(jù)。輸出一個(gè)長(zhǎng)整型數(shù)據(jù)。nout.print(String)out.print(String),out.println(String)out.println(String) 輸出一個(gè)字符串對(duì)象的內(nèi)容。輸出一個(gè)字符串對(duì)象的內(nèi)容。nout.newLine()
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年繁華商圈店鋪?zhàn)赓U合同3篇
- 2024年跨國(guó)保險(xiǎn)業(yè)務(wù)分銷(xiāo)合同
- 2024年版:項(xiàng)目合作風(fēng)險(xiǎn)共擔(dān)協(xié)議
- 2024黃山旅游紀(jì)念品設(shè)計(jì)合同
- 2025年度大理石石材進(jìn)出口貿(mào)易承包合同規(guī)范3篇
- 2024藝術(shù)品代理銷(xiāo)售與藝術(shù)品展覽策劃合同3篇
- 2024蔬菜產(chǎn)地直供與電商平臺(tái)合作意向協(xié)議書(shū)3篇
- 2025年度物業(yè)費(fèi)收取與調(diào)整協(xié)議3篇
- 2024甲乙雙方共建智慧城市戰(zhàn)略合作合同
- 西南大學(xué)《特殊兒童運(yùn)動(dòng)康復(fù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 眼藥水項(xiàng)目創(chuàng)業(yè)計(jì)劃書(shū)
- 2024年全國(guó)《國(guó)防和兵役》理論知識(shí)競(jìng)賽試題庫(kù)與答案
- 家居保潔課件
- 換電站(充電樁)安全風(fēng)險(xiǎn)告知
- 經(jīng)營(yíng)性房屋租賃項(xiàng)目投標(biāo)方案(技術(shù)標(biāo))
- 入戶調(diào)查合同范本
- 七年級(jí)道法上冊(cè)第一學(xué)期期末綜合測(cè)試卷(人教版 2024年秋)
- 標(biāo)桿地產(chǎn)五星級(jí)酒店精裝修標(biāo)準(zhǔn)
- DZ∕T 0153-2014 物化探工程測(cè)量規(guī)范(正式版)
- 商業(yè)空間設(shè)計(jì)(高職環(huán)境藝術(shù)設(shè)計(jì)專(zhuān)業(yè)和室內(nèi)設(shè)計(jì)專(zhuān)業(yè))全套教學(xué)課件
- 廣東省廣州市名校聯(lián)盟重點(diǎn)名校2024屆中考化學(xué)全真模擬試卷含解析
評(píng)論
0/150
提交評(píng)論