第4章 JSP 內(nèi)置對(duì)象_第1頁
第4章 JSP 內(nèi)置對(duì)象_第2頁
第4章 JSP 內(nèi)置對(duì)象_第3頁
第4章 JSP 內(nèi)置對(duì)象_第4頁
第4章 JSP 內(nèi)置對(duì)象_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章JSP內(nèi)置對(duì)象主要內(nèi)容request對(duì)象response對(duì)象

session對(duì)象out對(duì)象application對(duì)象難點(diǎn)理解session對(duì)象使用session對(duì)象存儲(chǔ)數(shù)據(jù)關(guān)鍵實(shí)踐計(jì)算器成績(jī)與餅圖記憶測(cè)試4.1request對(duì)象HTTP通信協(xié)議是用戶與服務(wù)器之間一種提交(請(qǐng)求)信息與響應(yīng)信息(request/response)的通信協(xié)議。在JSP中,內(nèi)置對(duì)象request封裝了用戶提交的信息,那么該對(duì)象調(diào)用相應(yīng)的方法可以獲取封裝的信息,即使用該對(duì)象可以獲取用戶提交的信息。內(nèi)置對(duì)象request對(duì)象是實(shí)現(xiàn)了ServletRequest接口類的一個(gè)實(shí)例,可以在Tomcat服務(wù)器的webapps\tomcat-docs\servletapi中查找ServletRequest接口的方法4.1.1獲取用戶提交的信息■用戶通常使用HTML的form表單:<formaction="請(qǐng)求訪問的頁面或Servlet"method=get|post>

提交手段</form>例如:<formaction="tom.jsp"method="post"><inputtype="text"name="boy"value="ok"/><inputtype="submit"name="submit"value="提交"/></form>請(qǐng)求服務(wù)器上的資源并提交信息。4.1request對(duì)象4.1.1獲取用戶提交的信息■request對(duì)象獲取用戶提交信息的最常用的方法是getParameter(Strings)例子4_1中,example4_1.jsp通過表單向example4_1_computer.jsp提交三角形三邊的長(zhǎng)度,example4_1_computer.jsp負(fù)責(zé)計(jì)算并顯示三角形的面積。例子4_1example4_1.jspexample4_1_computer.jsp4.1request對(duì)象4.1.1獲取用戶提交的信息■request對(duì)象獲取用戶提交信息的最常用的方法是getParameter(Strings)例子4_2中,example4_2.jsp通過表單向當(dāng)前頁面提交購物小票,當(dāng)前頁面自己負(fù)責(zé)計(jì)算購物小票的價(jià)格總和。如果form表單中的action請(qǐng)求的頁面是當(dāng)前頁面,可以用雙引號(hào)""或單引號(hào)代替當(dāng)前頁面,即寫成action=""或action='',注意雙引號(hào)或單引號(hào)中不能含有空格。也可省略action參數(shù),即不顯式寫出action參數(shù)。例子4_2example4_2.jsp4.1request對(duì)象4.1.1獲取用戶提交的信息■request對(duì)象獲取用戶提交信息的最常用的方法是getParameter(Strings)使用request對(duì)象獲取當(dāng)前頁面提交的信息時(shí)要格外小心,在上面的例子4_2中,當(dāng)用戶在瀏覽器中輸入頁面地址請(qǐng)求頁面時(shí),用戶還沒有機(jī)會(huì)提交數(shù)據(jù),那么頁面在執(zhí)行StringshoppingReceipt=request.getParameter("shopping");時(shí)得到的shoppingReceipt就是空對(duì)象。如果程序使用了空對(duì)象,Java解釋器就會(huì)提示出現(xiàn)了NullPointerException異常。因此,在上述例子2中為了避免在運(yùn)行時(shí)出現(xiàn)NullPointerException異常,使用了如下代碼:StringshoppingReceipt=request.getParameter("shopping");if(shoppingReceipt==null){shoppingReceipt="0";}4.1request對(duì)象4.1.2處理漢字信息用戶提交的信息中如果含有漢字字符或其他非ASCII字符的信息,就必須進(jìn)行特殊的處理方式,防止出亂碼現(xiàn)象?!裉幚頋h字信息JSP頁面文件的編碼為utf-8編碼。內(nèi)置對(duì)象request在獲取信息之前調(diào)用setCharacterEncoding方法設(shè)置編碼為utf-8(默認(rèn)是iso-8859-1)就可以避免亂碼現(xiàn)象代碼如下:request.setCharacterEncoding("utf-8");4.1request對(duì)象4.1.2處理漢字信息例子4_3中example4_3.jsp通過表單向自己提交不同語言的問候語,內(nèi)置對(duì)象request在獲取信息之前調(diào)用setCharacterEncoding方法設(shè)置編碼為utf-8,然后再獲取數(shù)據(jù)。例子4_3example4_3.jsp4.1request對(duì)象4.1.3常用方法舉例request的getParameter方法獲取form表單提交的有關(guān)信息,但實(shí)際上,request對(duì)象調(diào)用相關(guān)方法可以獲取請(qǐng)求的許多細(xì)節(jié)信息。內(nèi)置對(duì)象request常用方法如下:1)StringgetProtocol()獲取用戶向服務(wù)器提交信息所使用的通信協(xié)議,比如http/1.1等。2)StringgetServletPath()獲取用戶請(qǐng)求的JSP頁面文的名字(帶目錄符號(hào)\,例如\hello.jsp)。3)StringgetContextPath()獲取用戶請(qǐng)求的當(dāng)前Web服務(wù)目錄(例如ch4)。4)intgetContentLength()獲取用戶提交的整個(gè)信息的長(zhǎng)度。5)StringgetMethod()獲取用戶提交信息的方式,比如:post或get.6)StringgetRemoteAddr()獲取用戶的IP地址。7)StringgetRemoteHost()獲取用戶機(jī)的名稱(如果獲取不到,就獲取IP地址)。8)StringgetServerName()獲取服務(wù)器的名稱。9)StringgetServerPort()獲取服務(wù)器的端口號(hào)。4.1request對(duì)象4.1.3常用方法舉例request對(duì)象調(diào)用相關(guān)方法可以獲取請(qǐng)求的許多細(xì)節(jié)信息。例子4_4使用了request的一些常用方法.例子4_4example4_4.jsp4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)1.form標(biāo)記(form表單)<formaction="請(qǐng)求訪問的頁面或servlet"method=get|post>

各種提交手段提交鍵</form>例如:<formaction="tom.jsp"method="post"><inputtype="text"name="boy"value="ok"/><inputtype="submit"name="submit"value="提交"/></form>form表單標(biāo)記經(jīng)常將下列標(biāo)記作為form表單的子標(biāo)記,以便提供提交數(shù)據(jù)的手段,這些標(biāo)記都以GUI形式出現(xiàn),方便用戶輸入或選擇數(shù)據(jù),比如,文本框、下拉列表、滾動(dòng)列表等。<input…../><select…></select><option…..></option><textArea….></textArea>4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)2.input標(biāo)記<inputtype="GUI對(duì)象"name="GUI對(duì)象的名子"value="GUI中的默認(rèn)值"/>■Tom服務(wù)器的內(nèi)置對(duì)象request通過name指定的名字來獲取GUI對(duì)象中提交的數(shù)據(jù).(1)文本框text<inputtype="text"name="m"value="h"size="8"algin="left"maxlength="9"/>如果用戶沒有在text輸入任何信息,就單擊form表單中的submit提交鍵,request對(duì)象調(diào)用getParameter方法將獲取由value指定的默認(rèn)值(text中顯示的默認(rèn)值),如果value未指定任何值,getParameter方法獲取的字符串的長(zhǎng)度為0,即該字符串為""。4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)2.input標(biāo)記<inputtype="GUI對(duì)象"name="GUI對(duì)象的名子"value="GUI中的默認(rèn)值"/>■Tom服務(wù)器的內(nèi)置對(duì)象request通過name指定的名字來獲取GUI對(duì)象中提交的數(shù)據(jù).(2)單選框radio<inputtype="radio"name="hi"value="男"algin="top"checked="ok"/>男生<inputtype="radio"name="hi"value="女"algin="top"/>女生其中value指定radio的值,如果幾個(gè)單選鍵的name取值相同,那么同一時(shí)刻只能有一個(gè)被選中。request對(duì)象調(diào)用getParameter方法獲取被選中的radio中value屬性指定的值。checked如果取值是一個(gè)非空的字符串,那么該單選框的初始狀態(tài)就是選中狀態(tài)。

<inputtype="radio"name="R"value="on"/>打開

<inputtype="radio"name="R"value="off"checked="default">關(guān)閉4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)2.input標(biāo)記<inputtype="GUI對(duì)象"name="GUI對(duì)象的名子"value="GUI中的默認(rèn)值"/>■Tom服務(wù)器的內(nèi)置對(duì)象request通過name指定的名字來獲取GUI對(duì)象中提交的數(shù)據(jù).(3)復(fù)選框checkbox<inputtype="checkbox"name="item"value="A"algin="top"checked="ok"/>足球<inputtype="checkbox"name="item"value="B"algin="top"/>圍棋<inputtype="checkbox"name="item"value="C"algin="top"checked="ok"/>乒乓球<inputtype="checkbox"name="item"value="D"algin="top"/>籃球其中value指定checkbox的值。復(fù)選框與單選框的區(qū)別就是可以多選,即如果幾個(gè)checkbox的name取值相同,那么同一時(shí)刻可有多個(gè)chekbox被選中。這時(shí),request對(duì)象需調(diào)用getParameterValues方法(不是getParameter方法)獲取被選中的多個(gè)checkbox中value屬性指定的值。checked如果取值是一個(gè)非空的字符串,那么該復(fù)選框的初始狀態(tài)就是選中狀態(tài)。4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)2.input標(biāo)記<inputtype="GUI對(duì)象"name="GUI對(duì)象的名子"value="GUI中的默認(rèn)值"/>■Tom服務(wù)器的內(nèi)置對(duì)象request通過name指定的名字來獲取GUI對(duì)象中提交的數(shù)據(jù).(4)口令框password<inputtype="password"name="me"size="12"maxlength="30"/>用戶在口令框中輸入tiger,單擊提交鍵,tiger將被提交給form表單請(qǐng)求的頁面,請(qǐng)求的頁面的內(nèi)置對(duì)象request調(diào)用getParameter方法獲取password提交的值tiger(password僅僅起著不讓別人偷看的作用,不提供加密措施)。(5)隱藏hidden<inputtype="hidden"name="nogui"value="hello"/>用戶單擊form表單中的submit提交鍵,那么form表單所請(qǐng)求的頁面的內(nèi)置對(duì)象request調(diào)用getParameter方法將獲取由value指定的值hello。4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)2.input標(biāo)記<inputtype="GUI對(duì)象"name="GUI對(duì)象的名子"value="GUI中的默認(rèn)值"/>■Tom服務(wù)器的內(nèi)置對(duì)象request通過name指定的名字來獲取GUI對(duì)象中提交的數(shù)據(jù).(6)提交鍵submit為了能把form表單的數(shù)據(jù)提交給服務(wù)器,一個(gè)form表單至少包含一個(gè)提交鍵(可以有多個(gè)提交鍵,見稍后的例子10),例如:<inputtype="submit"name="me"value="確定"size="12"/>單擊提交鍵后,form表單請(qǐng)求的頁面才有機(jī)會(huì)獲取form表單提交的各個(gè)數(shù)據(jù)。(7)重置鍵:reset重置鍵將表單中輸入的數(shù)據(jù)清空,以便重新輸入數(shù)據(jù),例如:<inputtype="reset"value="重置"/>4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)2.input標(biāo)記例子4_5中JSP頁面example4_5.jsp用form表單向example4_5_receive.jsp提交數(shù)據(jù),example4_5_receive.jsp使用request對(duì)象獲得example4_5.jsp提交的數(shù)據(jù).例子4_5example4_5.jspexample4_5_receive.jsp4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)3.select、option標(biāo)記(下拉列表或滾動(dòng)列表)■Tom服務(wù)器的內(nèi)置對(duì)象request通過name指定的名字來獲取GUI對(duì)象中提交的數(shù)據(jù).<selectname="myName">

<optionvalue="item1">文本描述</option><optionvalue="item2">文本描述</option>……</select>例子6中用戶通過下拉列表為當(dāng)前頁面選擇一首音樂、通過滾動(dòng)列表為當(dāng)前頁面選擇一幅圖像。例子4_6example4_6.jsp4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)4.textArea標(biāo)記■Tom服務(wù)器的內(nèi)置對(duì)象request通過name指定的名字來獲取GUI對(duì)象中提交的數(shù)據(jù).<textAreaname="名字"rows="文本可見行數(shù)"cols="文本可見列數(shù)">

提交或顯示的數(shù)據(jù)</textArea>5.style樣式標(biāo)記style標(biāo)記可用于定義HTML其他標(biāo)記中的字體樣式,如,style標(biāo)記給出樣式:<style>#textStyle{font-family:宋體;font-size:18;color:blue}#tom{font-family:黑體;font-size:16;color:black}</style>4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)5.style樣式標(biāo)記其中,#字符之后的字符序列是樣式名稱,例如#textStyle給出的樣式名稱是textStyle(起一個(gè)自己喜歡且容易理解的名字),其它html標(biāo)記可以讓其id屬性值是樣式名稱來使用這個(gè)樣式。例如,段落標(biāo)記p就可以如下使用textStyle樣式:<pid="textStyle">你好</p>textArea標(biāo)記如下使用tom樣式:<textAreaname="english"id="tom"rows=5cols=38>大家好</textArea>input標(biāo)記如下使用textStyle樣式:<inputtype="submit"name="submit"id="textStyle"value="提交"/>4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)6.table標(biāo)記(主要用于顯示數(shù)據(jù),不能提交數(shù)據(jù))<tableborder="邊框的寬度"><trwidth="該行的寬度"><thwidth="單元格的寬度">單元格中的數(shù)據(jù)</th>…<tdwidth="單元格的寬度">單元格中的數(shù)據(jù)</td>…</tr>…….</table>4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)6.table標(biāo)記(主要用于顯示數(shù)據(jù),不能提交數(shù)據(jù))例子4_7中用戶在example4_7.jsp輸入年份和月份提交給example4_7_showCalendar.jsp,example4_7_showCalendar.jsp用table顯示日歷。例子7example4_7.jspexample4_7_showCalendar.jsp4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)8.embed標(biāo)記7.<image>標(biāo)記不能用于提交數(shù)據(jù),用于顯示圖像。<imagesrc="圖像文件的URL">描述文字</image>不能用于提交數(shù)據(jù)。使用embed標(biāo)記可以播放音樂和視頻,當(dāng)瀏覽器執(zhí)行該標(biāo)記時(shí),會(huì)把瀏覽器所在機(jī)器上的默認(rèn)播放器嵌入到瀏覽器中,以便播放音樂或視頻文件。embed標(biāo)記的基本格式為:<embedsrc="音樂或視頻文件的URL">描述文字</embed>或<embedsrc="音樂或視頻文件的URL"/>4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)例子4_8中example4_8.jsp頁面使用image標(biāo)記顯示一幅圖像,用戶使用下拉列表選擇要播放視頻提交給example4_8_play_mp4.jsp,example4_8_play_mp4.jsp頁面使用embed標(biāo)記播放用戶選擇的視頻。例子8example4_8.jspexample4_8_play_mp4.jsp4.1request對(duì)象4.1.4處理HTML標(biāo)記(不區(qū)分大小寫)9.屬性值格式的說明許多HTML標(biāo)記的中都有屬性,并指定屬性的值,例如:<inputtype="text"name="testAmount"value=10/>中的type,name,value都是input標(biāo)記的屬性,屬性值可以用雙引號(hào)括起,也可以用單引號(hào)括起,或者不用任何符號(hào).

比如type屬性的值可以用雙引號(hào)括起"text",也可以用單引號(hào)括起'text'或者不用任何符號(hào)text,一個(gè)好的習(xí)慣是用單引號(hào)括起。例如,下列超鏈接標(biāo)記中的href的屬性值用單引號(hào)括起。<ahref=’example4_1.jsp’>超鏈接</a>4.1request對(duì)象4.1.5處理超鏈接超鏈接標(biāo)記<ahref=鏈接的頁面地址>文字說明</a>是一個(gè)常用標(biāo)記。例如:<ahref="example4_9_receive.jsp>購買</a>用戶單擊超鏈接標(biāo)記的文字說明,可以訪問超鏈接給出的鏈接頁面。使用超鏈接標(biāo)記時(shí)還可以增加參數(shù),以便向所鏈接的頁面?zhèn)鬟f值,格式如下:<ahref=鏈接的頁面地址?參數(shù)1=字符串1&參數(shù)2=字符串2…>文字說明</a>例如:<ahref="example4_9_receive.jsp?id=A1001&price=8765">購買</a>超鏈接所鏈接的頁面,使用request調(diào)用getParameter("參數(shù)")獲得超鏈接的參數(shù)傳遞過來的參數(shù)的值,即字符串。例如:StringidStr=request.getParameter("id");需要注意的是,超鏈接標(biāo)記向所鏈接的頁面?zhèn)鬟f的參數(shù)的值,即字符串中不允許含有非ASCII字符(例如漢字等)。4.1request對(duì)象4.1.5處理超鏈接例子4_9中example4_9.jsp用超鏈接向example4_9_receive.jsp傳遞商品的編號(hào)和價(jià)格。例子9example4_9.jspexample4_9_receive.jsp4.2response對(duì)象4.2.1動(dòng)態(tài)響應(yīng)contentType屬性與request對(duì)象相對(duì)應(yīng)的對(duì)象是response對(duì)象??梢杂胷esponse對(duì)象對(duì)用戶的請(qǐng)求作出動(dòng)態(tài)響應(yīng),向用戶端發(fā)送數(shù)據(jù)?!鲰撁嬗胮age指令設(shè)置頁面的contentType屬性的值,那么Tomcat服務(wù)器將按著這種屬性值作出響應(yīng),將頁面的靜態(tài)部分返回給用戶,用戶瀏覽器接收到該響應(yīng)就會(huì)使用相應(yīng)的手段處理所收到的信息?!鰌age指令只能為contentType指定一個(gè)值來決定響應(yīng)的MIME類型,如果想動(dòng)態(tài)的改變這個(gè)屬性的值來響應(yīng)用戶,就需要使用response對(duì)象的setContentType(Strings)方法來改變contentType的屬性值■當(dāng)用setContentType(Strings)方法動(dòng)態(tài)改變了contentType的屬性值,即響應(yīng)的MIME類型,Tomcat服務(wù)器就會(huì)按著新的MIME類型將JSP頁面的輸出結(jié)果返回給用戶。4.2response對(duì)象4.2.1動(dòng)態(tài)響應(yīng)contentType屬性例子10中用戶在example4_10.jsp頁面輸入圓半徑,然后單擊名字“提交看面積”提交鍵,請(qǐng)求訪問example4_10_show.jsp頁面,該頁面顯示圓的面積。但是,如果用戶輸入圓半徑單擊名字“提交看圓形”提交鍵,那么example4_10_show.jsp的內(nèi)置對(duì)象response將默認(rèn)的MIME類型text/html改變成image/jpeg,以便用戶的瀏覽器啟用相應(yīng)的圖形解碼器顯示服務(wù)器發(fā)來的圖形。例子10example4_10.jspexample4_10_show.jsp4.2response對(duì)象4.2.2response的HTTP文件頭response對(duì)象可以使用方法addHeader(Stringhead,Stringvalue);或setHeader(Stringhead,Stringvalue);動(dòng)態(tài)添加新的響應(yīng)頭和頭的值,將這些頭發(fā)送給用戶的瀏覽器。如果添加的頭已經(jīng)存在,則先前的頭被覆蓋例子11中,response對(duì)象添加一個(gè)響應(yīng)頭refresh,其頭值是5。那么用戶收到這個(gè)頭之后,5秒鐘后將再次刷新該頁面,導(dǎo)致該網(wǎng)頁每5秒刷新一次.例子11example4_11.jsp4.2response對(duì)象4.2.3response重定向■response的sendRedirect(URLurl)方法實(shí)現(xiàn)用戶的重定向,即讓用戶從一個(gè)頁面跳轉(zhuǎn)到sendRedirect(URL:url)中url指定的頁面?!霎?dāng)使用sendRedirect(URLurl)方法將用戶從當(dāng)前頁面重定向另一個(gè)頁面時(shí),Tomcat服務(wù)器還是要把當(dāng)前JSP頁面執(zhí)行完畢后才實(shí)施重定向(跳轉(zhuǎn))操作,但Tomcat服務(wù)器不再給用戶看當(dāng)前頁面的執(zhí)行效果?!鋈绻趫?zhí)行sendRedirect(URLurl)方法后,緊接著執(zhí)行了return返回語句,那么Tomcat服務(wù)器會(huì)立刻結(jié)束當(dāng)前JSP頁面的執(zhí)行。例子12中,用戶在example4_12.jsp頁面的form表單中輸入姓名提交給example4_12_receive.jsp頁面,如果未輸入姓名就提交form表單就會(huì)重新定向到example4_12.jsp頁面。例子12example4_12.jsp4.3session對(duì)象HTTP協(xié)議是一種無狀態(tài)協(xié)議。一個(gè)用戶向服務(wù)器發(fā)出請(qǐng)求(request),然后服務(wù)器返回響應(yīng)(response),在服務(wù)器端不保留用戶的有關(guān)信息,因此當(dāng)下一次發(fā)出請(qǐng)求時(shí),服務(wù)器無法判斷這一次請(qǐng)求和以前的請(qǐng)求是否屬于同一用戶?!颰omcat服務(wù)器可以使用內(nèi)置session對(duì)象(會(huì)話)記錄用戶的信息。內(nèi)置對(duì)象session由Tomcat服務(wù)器負(fù)責(zé)創(chuàng)建.4.3session對(duì)象4.3.1session對(duì)象的id■當(dāng)一個(gè)用戶首次訪問web服務(wù)目錄中的一個(gè)JSP頁面時(shí),Tomcat服務(wù)器產(chǎn)生一個(gè)session對(duì)象,這個(gè)session對(duì)象調(diào)用相應(yīng)的方法可以存儲(chǔ)用戶在訪問該web服務(wù)目錄中各個(gè)頁面期間提交的各種信息。■這個(gè)session對(duì)象被分配了一個(gè)String類型的id號(hào),Tomcat服務(wù)器同時(shí)將這個(gè)id號(hào)發(fā)送到用戶端,存放在用戶(瀏覽器)的Cookie中。這樣,session對(duì)象和用戶之間就建立起一一對(duì)應(yīng)的關(guān)系,即每個(gè)用戶都對(duì)應(yīng)著一個(gè)session對(duì)象(稱作用戶的會(huì)話),不同用戶(不同瀏覽器)的session對(duì)象互不相同,具有不同的id號(hào)碼?!霎?dāng)用戶再訪問該Web服務(wù)目錄的其它頁面時(shí),Tomcat服務(wù)器不再分配給用戶的新session對(duì)象,而是使用完全相同的一個(gè),直到session對(duì)象達(dá)到了最大生存時(shí)間或用戶關(guān)閉自己的瀏覽器或Tomcat服務(wù)器關(guān)閉,Tomcat服務(wù)器將銷毀用戶的session對(duì)象★簡(jiǎn)單地說,用戶(瀏覽器)在訪問一個(gè)Web服務(wù)目錄期間,服務(wù)器為該用戶分配一個(gè)session對(duì)象(稱作和該用戶的會(huì)話),服務(wù)器可以在各個(gè)頁面使用這個(gè)session記錄當(dāng)前用戶的有關(guān)信息。而且服務(wù)器保證不同用戶的session對(duì)象互不相同。注

同一個(gè)用戶在不同的Web服務(wù)目錄中的session是互不相同的。4.3session對(duì)象4.3.1session對(duì)象的id例子13中用戶在服務(wù)器的某個(gè)Web服務(wù)目錄中的2個(gè)頁面example4_13_a.jsp和example4_13_b.jsp進(jìn)行鏈接,2個(gè)頁面的session對(duì)象是完全相同的.例子13example4_13_a.jspexample4_13_b.jsp

4.3session對(duì)象4.3.2session對(duì)象與URL重寫■session對(duì)象能和用戶建立起一一對(duì)應(yīng)關(guān)系依賴于用戶瀏覽器是否支持Cookie。■如果用戶不支持Cookie,JSP頁面可以通過URL重寫來實(shí)現(xiàn)session對(duì)象的唯一性。Stringstr=response.encodeRedirectURL("example4_13_b.jsp");然后將連接目標(biāo)寫成<%=str%>例如:<formaction="example4_13_b.jsp"method=post>更改為:<formaction=<%=str%>method=post>4.3session對(duì)象4.3.3session對(duì)象存儲(chǔ)數(shù)據(jù)(1)publicvoidsetAttribute(Stringkey,Objectobj)。session對(duì)象可以調(diào)用該方法將參數(shù)Object指定的對(duì)象obj添加到session對(duì)象中,并為添加的對(duì)象指定了一個(gè)索引關(guān)鍵字,如果添加的兩個(gè)對(duì)象的關(guān)鍵字相同,則先前添加的對(duì)象被清除。(2)publicObjectgetAttribute(Stringkey)。獲取session對(duì)象索引關(guān)鍵字是key的對(duì)象。由于任何對(duì)象都可以添加到session對(duì)象中,因此用該方法取回對(duì)象時(shí),應(yīng)顯式轉(zhuǎn)化為原來的類型。例子14實(shí)現(xiàn)猜數(shù)字游戲。當(dāng)用戶訪問example4_14.jsp時(shí),隨機(jī)分配給用戶一個(gè)1到100之間的整數(shù),然后將這個(gè)整數(shù)存在用戶的session對(duì)象中。用戶在form表單的text里輸入自己的猜測(cè)。用戶輸入猜測(cè)后單擊提交鍵,訪問example4_14_judge.jsp頁面,該頁面負(fù)責(zé)判斷用戶給出的猜測(cè)是否和用戶的session對(duì)象中存放的那個(gè)整數(shù)相同,如果相同就將用戶定向到example4_14_success.jsp,如果不相同就就將用戶定向到example4_14_large.jsp或example4_14_small.jsp,然后,用戶在這些頁面再重新提交新的猜測(cè)給example4_14_judge.jsp頁面。4.3session對(duì)象4.3.3session對(duì)象存儲(chǔ)數(shù)據(jù)例子14example4_14.jspexample4_14_judge.jspexample4_14_small.jspexample4_14_large.jspexample4_14_success.jsp4.3session對(duì)象4.3.4session對(duì)象的生存期限■session對(duì)象的生存期限依賴于session對(duì)象是否調(diào)用invalidate()方法使得session無效或session對(duì)象達(dá)到了設(shè)置的最長(zhǎng)的“發(fā)呆”狀態(tài)時(shí)間以及用戶是否關(guān)閉瀏覽器或服務(wù)器被關(guān)閉?!^“發(fā)呆”狀態(tài)時(shí)間是指用戶對(duì)某個(gè)Web服務(wù)目錄發(fā)出的兩次請(qǐng)求之間的間隔時(shí)間(默認(rèn)的發(fā)呆時(shí)間是30分鐘)?!蜷_Tomcat安裝目錄中conf文件下的配置文件web.xml,找到<session-config><session-timeout>30</session-timeout></session-config>將其中的30修改成所要求的值即可(單位為分鐘)。。4.3session對(duì)象4.3.4session對(duì)象的生存期限例子15中session對(duì)象使用setMaxInactiveInterval(intinterval)方法設(shè)置最長(zhǎng)的“發(fā)呆”狀態(tài)時(shí)間為6秒。用戶可以通過刷新頁面檢查是否達(dá)到了最長(zhǎng)的“發(fā)呆”時(shí)間,如果兩次刷新之間的間隔超過6秒,用戶先前的session將被取消,用戶將獲得一個(gè)新的session對(duì)象。例子15example4_15.jsp4.4application對(duì)象4.4.1application對(duì)象的常用方法4.3節(jié)學(xué)習(xí)了session對(duì)象,用戶第一次訪問Web服務(wù)目錄時(shí),Tomcat服務(wù)器創(chuàng)建和該用戶相對(duì)應(yīng)的session對(duì)象,當(dāng)用戶在所訪問的Web服務(wù)目錄的各個(gè)頁面之間瀏覽時(shí),這個(gè)session對(duì)象都是同一個(gè),而且不同用戶的session對(duì)象是互不相同的。本節(jié)學(xué)習(xí)的application對(duì)象也是由Tomcat服務(wù)器負(fù)責(zé)創(chuàng)建,但與

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論