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

下載本文檔

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

文檔簡介

1、2021-6-151動態(tài)網(wǎng)頁設(shè)計動態(tài)網(wǎng)頁設(shè)計第第4章章 JSP內(nèi)置對象內(nèi)置對象2021-6-152第第4章章 JSP內(nèi)置對象內(nèi)置對象l為簡化為簡化Web頁面的開發(fā)過程,頁面的開發(fā)過程,JSP提供了一些由提供了一些由服務(wù)器實現(xiàn)和管理的內(nèi)置對象,這些內(nèi)置對象在服務(wù)器實現(xiàn)和管理的內(nèi)置對象,這些內(nèi)置對象在JSP頁面中頁面中不用聲明就可以使用不用聲明就可以使用。l內(nèi)置對象是服務(wù)器內(nèi)置對象是服務(wù)器JSP引擎自動創(chuàng)建引擎自動創(chuàng)建的的Java類實類實例例l通過存取這些內(nèi)置對象實現(xiàn)與通過存取這些內(nèi)置對象實現(xiàn)與JSP頁面和頁面和Servlet環(huán)境的相互訪問。環(huán)境的相互訪問。l內(nèi)置對象可以實現(xiàn)很多功能,如從客戶端獲

2、得數(shù)內(nèi)置對象可以實現(xiàn)很多功能,如從客戶端獲得數(shù)據(jù)、向客戶端發(fā)回數(shù)據(jù)、控制傳輸數(shù)據(jù)的有效域據(jù)、向客戶端發(fā)回數(shù)據(jù)、控制傳輸數(shù)據(jù)的有效域和異常處理等。和異常處理等。4.1 JSP內(nèi)置對象概述內(nèi)置對象概述2021-6-153內(nèi)置對象功能舉例說明內(nèi)置對象功能舉例說明l使用直接存取使用直接存取out對象來打印一些東西到客對象來打印一些東西到客戶端戶端: l借助請求對象來取得客戶端輸入的參數(shù)值借助請求對象來取得客戶端輸入的參數(shù)值: l完成頁面的重定向:完成頁面的重定向:l l在錯誤頁面中顯示出錯信息:在錯誤頁面中顯示出錯信息: 重新使用;改寄重新使用;改寄;改變投遞方向改變投遞方向2021-6-154JSP

3、中的中的9種內(nèi)置對象種內(nèi)置對象隱含隱含對象對象所屬的類所屬的類說明說明requestjavax.servlet.http.HttpServletRequest客戶端的請求信息客戶端的請求信息responsejavax.servlet.http.HttpServletResponse網(wǎng)頁傳回客戶端的響應(yīng)網(wǎng)頁傳回客戶端的響應(yīng)outjavax.servlet.jsp.JSPWriter向客戶端瀏覽器輸出數(shù)據(jù)的數(shù)據(jù)流向客戶端瀏覽器輸出數(shù)據(jù)的數(shù)據(jù)流sessionjavax.servlet.http.Possessionate與請求有關(guān)的會話與請求有關(guān)的會話applicationjavax.servlet

4、.ServletContext提供全局的數(shù)據(jù),提供全局的數(shù)據(jù),一旦創(chuàng)建就保持到服務(wù)器一旦創(chuàng)建就保持到服務(wù)器關(guān)閉關(guān)閉pageContextjavax.servlet.jsp.PageContextJSP 頁面的上下文,用于訪問頁面屬性頁面的上下文,用于訪問頁面屬性pagejava.lang.Object同同 Java 中的中的 this,即,即 JSP 頁面本身頁面本身configjavax.servlet.servletConfigServlet 的配置對象的配置對象exceptionjava.lang.Throwable針對針對錯錯誤網(wǎng)頁,捕捉誤網(wǎng)頁,捕捉一般網(wǎng)頁中未捕捉的異一般網(wǎng)頁中未捕捉

5、的異常常人生如夢,歲月無情。驀然回首,才發(fā)現(xiàn)人活著是一種心情。窮也好,富也好,得也好,失也好。一切都是過眼云煙。想想,不管昨天、今天、明天,能豁然開朗就是美好的一天。不管親情、友情、愛情,能永遠珍惜就是好心情與輸入與輸入/輸輸出有關(guān)出有關(guān) 與屬性作與屬性作用域有關(guān)用域有關(guān) 與與Servlet 相關(guān)相關(guān) 與錯誤處與錯誤處理有關(guān)理有關(guān) 2021-6-1554.2 與輸入與輸入/輸出有關(guān)的內(nèi)置對象輸出有關(guān)的內(nèi)置對象l 4.2.1 request對象對象l 4.2.2 response對象對象l 4.2.3 out對象對象2021-6-1564.2.1 request對象對象1請求行請求行 規(guī)定了請求

6、的方法(如規(guī)定了請求的方法(如get、post、head、delete、put等),等),請求的資源和使用的請求的資源和使用的HTTP協(xié)議版本協(xié)議版本號。號。2請求頭請求頭 請求頭主要說明請求客戶的主請求頭主要說明請求客戶的主機機IP、cookie 、信息體和附加信息。信息體和附加信息。一個一個HTTP請求可以包括多個請求頭。請求可以包括多個請求頭。3信息體信息體 指請求的正文。如表單數(shù)據(jù)被封指請求的正文。如表單數(shù)據(jù)被封裝為信息體裝為信息體2021-6-1574.2.1 request對象(續(xù))對象(續(xù))l在在JSP頁面中,使用內(nèi)置對象頁面中,使用內(nèi)置對象request可以查看可以查看HTTP

7、請求報文中的這些信息。請求報文中的這些信息。l它是實現(xiàn)它是實現(xiàn) javax.servlet.HttpServletRequest 接接口的類的一個實例。口的類的一個實例。 lrequest 對象的方法有很多對象的方法有很多 ,從功能角度可以將,從功能角度可以將這些方法分為這些方法分為4類:類: 取得請求參數(shù)的方法取得請求參數(shù)的方法取得請求取得請求HTTP 頭的方法頭的方法儲存和取得屬性方法儲存和取得屬性方法其他的方法其他的方法2021-6-1581取得請求參數(shù)的方法取得請求參數(shù)的方法 2021-6-1592.取得請求取得請求HTTP 頭的方法頭的方法 2021-6-15103儲存和取得屬性方法

8、儲存和取得屬性方法 2021-6-15114其他的方法其他的方法 2021-6-15124其他的方法(續(xù))其他的方法(續(xù)) 2021-6-1513request比較重要的方法比較重要的方法 l getParameter() l getParameterNames() l getParameterValues() l getHeader() 記住噢記住噢2021-6-15. 獲得客戶端提交的信息獲得客戶端提交的信息String getParameter(String name) l該方法用于獲取客戶端瀏覽器傳遞(如:表單、該方法用于獲取客戶端瀏覽器傳遞(如:表單、param動作

9、指令)給服務(wù)器端由動作指令)給服務(wù)器端由name指定的參數(shù)值。指定的參數(shù)值。l當(dāng)傳遞給此方法的參數(shù)名當(dāng)傳遞給此方法的參數(shù)名name沒有實際參數(shù)與之對應(yīng)沒有實際參數(shù)與之對應(yīng)時,則返回時,則返回null。2021-6-1515獲得客戶端提交的信息(續(xù))獲得客戶端提交的信息(續(xù)) 文本框提交的用戶名為:文本框提交的用戶名為: 客戶端提交的按鈕的名字為:客戶端提交的按鈕的名字為: exa3_1.jsp1.運行運行2.調(diào)用調(diào)用3.執(zhí)行結(jié)果執(zhí)行結(jié)果舉例:舉例:tree.jsp 2021-6-15. 處理中文信息處理中文信息l在例在例exa3_1.jsp中輸入中文時將不能正確顯示,中輸入中

10、文時將不能正確顯示, 如圖所示:如圖所示:這就引發(fā)如何處理客戶端提交的中文問題。這就引發(fā)如何處理客戶端提交的中文問題。2021-6-1517JSP頁面的漢字問題主要指兩方面:頁面的漢字問題主要指兩方面:lJSP頁面中的漢字問題頁面中的漢字問題l表單提交的漢字問題表單提交的漢字問題2021-6-1518(1)JSP頁面的漢字問題頁面的漢字問題l對于對于JSP頁面的漢字問題,需要在頁面的漢字問題,需要在JSP中使用中使用page指指令告訴客戶端漢字的編碼方式:令告訴客戶端漢字的編碼方式:l在沒有特別指示下,瀏覽器無法正確顯示漢字,每個在沒有特別指示下,瀏覽器無法正確顯示漢字,每個要顯示漢字的要顯示

11、漢字的JSP頁面都應(yīng)該包含該語句。頁面都應(yīng)該包含該語句。 2021-6-1519(2)表單提交的漢字問題)表單提交的漢字問題l原因原因:客戶端和服務(wù)器交互過程中,在客戶端和服務(wù)器用的:客戶端和服務(wù)器交互過程中,在客戶端和服務(wù)器用的是是GB2312對漢字編碼,而對漢字編碼,而HTTP傳輸用傳輸用ISO_8859_1編碼編碼l解決思想解決思想:不僅服務(wù)器端必須用指令:不僅服務(wù)器端必須用指令指示客戶端指示客戶端漢字的顯示編碼,同時在服務(wù)器端接收到客戶端數(shù)據(jù)時需要漢字的顯示編碼,同時在服務(wù)器端接收到客戶端數(shù)據(jù)時需要將編碼轉(zhuǎn)換為將編碼轉(zhuǎn)換為GB2312后進行處理后進行處理2021-6-1520(2)表單

12、提交的漢字問題(續(xù))表單提交的漢字問題(續(xù))具體做法:具體做法: 或或 或或 2021-6-15. 類型轉(zhuǎn)換問題類型轉(zhuǎn)換問題String getParameter(String name) 注意:注意:request.getParameter方法方法獲取客戶端瀏覽器傳獲取客戶端瀏覽器傳遞給服務(wù)器端由遞給服務(wù)器端由name指定的參數(shù)值類型是指定的參數(shù)值類型是字串型字串型。有時輸入的信息是數(shù)字,并需要用于數(shù)字計算時,要進有時輸入的信息是數(shù)字,并需要用于數(shù)字計算時,要進行類型格式轉(zhuǎn)換行類型格式轉(zhuǎn)換2021-6-1522請輸入一個數(shù)字,計算其平方根:請輸入一個數(shù)字,計算其平方根: 2

13、021-6-1523=0) r=Math.sqrt(number) ; out.print(+String.valueOf(number)+的平方根:的平方根:); out.print(+String.valueOf(r); else out.print(+請輸入一個正數(shù)請輸入一個正數(shù)); catch(NumberFormatException e) out.print(+請輸入數(shù)字字符請輸入數(shù)字字符); %Float.parseFloatInteger.parseInt2021-6-15. 避免空指針異常避免空指針異常例如例如:l String textContent=re

14、quest.getParameter(“tnumber”) 如果在如果在JSP引擎運行這個引擎運行這個JSP頁面時,客戶端還沒有提交數(shù)頁面時,客戶端還沒有提交數(shù)據(jù),據(jù),textContent也還沒有創(chuàng)建也還沒有創(chuàng)建,此時此時textContent對象為對象為nulllnumber=Double.parseDouble(textContent)語句需要使用語句需要使用textContent,Java解釋器會提示出現(xiàn)空指針異常解釋器會提示出現(xiàn)空指針異常NullPointerExceptionl為了避免使用空對象,在為了避免使用空對象,在JSP頁面中使用了如下代碼:頁面中使用了如下代碼: if (

15、textContent=null ) textContent=100; 2021-6-15. 其它常用方法其它常用方法lgetServletPath() lgetContentLength() lgetMethod() lgetHeader( )lgetProtocol() 2021-6-1526 Request對象獲得服務(wù)器端參數(shù)對象獲得服務(wù)器端參數(shù) request.getMethod(): request.getProtocol(): request.getServletPath(): request.getServerName(): request.getServerP

16、ort(): request.getRemoteUser(): request.getRemoteAddr(): request.getRemoteHost(): 正在使用的瀏覽器:正在使用的瀏覽器: 2021-6-152. 獲取獲取HTML表單中的各種數(shù)據(jù)表單中的各種數(shù)據(jù)表單表單 用戶登錄用戶登錄 用戶名:用戶名:密碼:密碼:獲取方法:獲取方法:String textname=request.getParameter(“User);String textpwd=request.getParameter(“pwd);(1)提取文本框和密碼框中數(shù)據(jù))提取文本框和密碼框中數(shù)據(jù)202

17、1-6-1528p詩人李清照是中國歷史上哪個朝代的人?詩人李清照是中國歷史上哪個朝代的人?宋朝宋朝唐朝唐朝明朝明朝清朝清朝史記史記的作者是誰?的作者是誰?曹雪芹曹雪芹羅貫中羅貫中李白李白司馬遷司馬遷您的了您的了分分(2)提取單選按鈕選擇的信息)提取單選按鈕選擇的信息2021-6-1529select.jsp關(guān)鍵代碼:關(guān)鍵代碼:選擇計算和的方式選擇計算和的方式 計算計算1到到n的和的和 計算計算1到到n的平方和的平方和 計算計算1到到n的立方和的立方和請選擇請選擇n的值的值 n=10 n=20 n=30 n=40 n=50 n=100(3)提取列表框中選擇的信息)提取列表框中選擇的信息sum.j

18、sp關(guān)鍵代碼:關(guān)鍵代碼:% int sum=0; String s1=request.getParameter(“select1); String s2=request.getParameter(“select2); 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é)果是您的求和結(jié)果是2021-6-1530(4)提取復(fù)選按鈕組中選擇的信息)提取復(fù)選按鈕組中

19、選擇的信息2021-6-1531(4)提取復(fù)選按鈕組中選擇的信息)提取復(fù)選按鈕組中選擇的信息(續(xù)續(xù))checkbox 選擇你喜歡的運動:選擇你喜歡的運動: 足球足球 藍球藍球 乒乓球乒乓球 游泳游泳 跑步跑步 網(wǎng)球網(wǎng)球 2021-6-1532% request.setCharacterEncoding (gb2312);String itemName =request.getParameterValues(mylike); if (itemName=null) out.println(一個都不喜歡一個都不喜歡); else out.println(itemName.length=+itemNa

20、me.length+); for(int k=0;k2021-6-15334.2.2 response對象對象l當(dāng)客戶訪問一個服務(wù)器的頁面時,會提交一個當(dāng)客戶訪問一個服務(wù)器的頁面時,會提交一個HTTP請求,服務(wù)器接到請求時會返回請求,服務(wù)器接到請求時會返回HTTP響應(yīng)。響應(yīng)。HTTP HTTP 的報文結(jié)構(gòu)(響應(yīng)報文)的報文結(jié)構(gòu)(響應(yīng)報文) 版 本狀態(tài)碼短 語首部字段名首部行:值首部字段名值:實體主體(有些響應(yīng)報文不用)狀態(tài)行空格回車換行:CRLFCRLFCRLFCRLF2021-6-1534l response對象代表的是對客戶端的響應(yīng),其功對象代表的是對客戶端的響應(yīng),其功能是將服務(wù)器處理后的

21、結(jié)果傳回到客戶端,響應(yīng)能是將服務(wù)器處理后的結(jié)果傳回到客戶端,響應(yīng)客戶請求。客戶請求。lresponse響應(yīng)是實現(xiàn)響應(yīng)是實現(xiàn)javax.servlet.HttpServletResponse接口的類的接口的類的一個實例。一個實例。2021-6-1535lresponse對象的方法:對象的方法:設(shè)定響應(yīng)狀態(tài)碼的方法設(shè)定響應(yīng)狀態(tài)碼的方法設(shè)定表頭的方法設(shè)定表頭的方法用來用來URL 重寫的方法重寫的方法其它方法其它方法2021-6-1536設(shè)定表頭的方法設(shè)定表頭的方法 2021-6-1537設(shè)定響應(yīng)狀態(tài)碼的方法設(shè)定響應(yīng)狀態(tài)碼的方法 2021-6-1538用來用來URL重寫的方法重寫的方法 2021-6-

22、1539其其 它它 方方 法法 2021-6-1540response重要方法重要方法response對象中使用較多的方法是:對象中使用較多的方法是:lsetContentType()lsetHeader()lsendRedirect()lsetStatus() 2021-6-154. 動態(tài)設(shè)置動態(tài)設(shè)置MIME類型類型l在在page指令中的指令中的contentType屬性用來指定屬性用來指定response對對象響應(yīng)客戶端請求的象響應(yīng)客戶端請求的MIME(Multipurpose Internet Mail Extension protocol,多用途網(wǎng)際郵件擴充協(xié)議)類型。

23、,多用途網(wǎng)際郵件擴充協(xié)議)類型。l page指令只能為指令只能為contentType指定一個值,如果想動態(tài)指定一個值,如果想動態(tài)地改變這個屬性的值來以各種不同的方式做出響應(yīng),就要地改變這個屬性的值來以各種不同的方式做出響應(yīng),就要使用使用response對象的對象的setContentType()方法改變方法改變contentType的值。的值。l一旦這個屬性值被改變,服務(wù)器就將按照新的一旦這個屬性值被改變,服務(wù)器就將按照新的MIME類型類型做出響應(yīng)做出響應(yīng) 。2021-6-1542contentType屬性和屬性和MIME類型的對應(yīng)關(guān)系類型的對應(yīng)關(guān)系 2021-6-1543 學(xué)習(xí)學(xué)習(xí)resp

24、onse對象的對象的setContentType方法的使用方法的使用 要將當(dāng)前頁面保存為要將當(dāng)前頁面保存為.TXT文件嗎?文件嗎? 程序運行后,單程序運行后,單擊擊“是是”按鈕彈按鈕彈出出“保存保存”對話對話框框2021-6-154. response對象的對象的http頭頭lresponse對象可以使用對象可以使用addHeader()和和setHeader()方方法動態(tài)添加和修改相應(yīng)頭的值,并將這些頭發(fā)送給客法動態(tài)添加和修改相應(yīng)頭的值,并將這些頭發(fā)送給客戶端。戶端。l下面例下面例response對象添加一個頭對象添加一個頭refresh,使客戶端在,使客戶端在顯示該頁面時,

25、每顯示該頁面時,每5秒鐘刷新一次。秒鐘刷新一次。現(xiàn)在的時間是: 圖 3-15 example3_12.jsp 運 行 結(jié) 果 2021-6-154. response重定向重定向l下面例中,客戶填寫表單,并提交給下面例中,客戶填寫表單,并提交給tree4.jsp頁面。如果頁面。如果表單填寫不完整,表單填寫不完整,tree4.jsp會重新定向到填寫頁面,否則會重新定向到填寫頁面,否則顯示歡迎字樣顯示歡迎字樣填寫姓名2021-6-154. response重定向重定向(續(xù)續(xù))2021-6-154. response的狀態(tài)行的狀態(tài)行l(wèi)當(dāng)服務(wù)器響應(yīng)客戶端

26、請求時,它發(fā)送的首行被稱為狀態(tài)行。當(dāng)服務(wù)器響應(yīng)客戶端請求時,它發(fā)送的首行被稱為狀態(tài)行。狀態(tài)行包括狀態(tài)行包括3位數(shù)字的狀態(tài)碼和對狀態(tài)碼的簡單描述。位數(shù)字的狀態(tài)碼和對狀態(tài)碼的簡單描述。1xx主要是試驗性質(zhì)的;主要是試驗性質(zhì)的;2xx表示請求成功;表示請求成功;3xx表示在請求在滿足之前應(yīng)進一步采取的行動;表示在請求在滿足之前應(yīng)進一步采取的行動;4xx表示服務(wù)器無法滿足要求;表示服務(wù)器無法滿足要求;5xx服務(wù)器出現(xiàn)錯誤。服務(wù)器出現(xiàn)錯誤。2021-6-1548狀態(tài)代碼表2021-6-1549狀態(tài)代碼表2021-6-1550 點擊下面的超鏈接:點擊下面的超鏈接: 第一個頁面不歡迎你第一個頁面不歡迎你 第

27、二個頁面歡迎你第二個頁面歡迎你 第三個頁面不歡迎你第三個頁面不歡迎你 bird1.jsp bird2.jsp bird3.jsp2021-6-15514.2.3 out對象對象lout對象是一個輸出流,表示向客戶端發(fā)送數(shù)據(jù),通過對象是一個輸出流,表示向客戶端發(fā)送數(shù)據(jù),通過out對象發(fā)送的內(nèi)容將是瀏覽器需要顯示的內(nèi)容,是文本一級對象發(fā)送的內(nèi)容將是瀏覽器需要顯示的內(nèi)容,是文本一級的。的。l通過通過out對象直接向客戶端寫一個由程序動態(tài)生成對象直接向客戶端寫一個由程序動態(tài)生成HTML文件。文件。lout對象是對象是javax.servlet.jsp.JspWriter類的一個實例。類的一個實例。20

28、21-6-1552out對象重要方法對象重要方法 JSP允許通過允許通過page指令的指令的buffer屬性調(diào)整屬性調(diào)整out對象緩對象緩存的大小,甚至允許關(guān)閉緩存。存的大小,甚至允許關(guān)閉緩存。2021-6-1553 % out.println(); out.println(); out.println(); out.println(+姓名姓名+); out.println(+性別性別+); out.println(+年齡年齡+); out.println(); out.println(); out.println(+張三豐張三豐+); out.println(+男男+); out.print

29、ln(+50+); out.println(); out.println(+劉東東劉東東+); out.println(+男男+); out.println(+35+); out.println(); out.println(); out.println(); % 例例:用用out對象輸出表格,運行結(jié)果如圖所示對象輸出表格,運行結(jié)果如圖所示 2021-6-1554關(guān)鍵代碼:關(guān)鍵代碼:BufferSize : Available : Used : 例例:顯示目前緩沖區(qū)的大小顯示目前緩沖區(qū)的大小 。運行結(jié)果如圖所示。運行結(jié)果如圖所示 2021-6-15554.3與屬性作用域有關(guān)的對象與屬性作用域有

30、關(guān)的對象l3.3.1 session對象對象l3.3.2 application對象對象l3.3.3 pageContext對象對象2021-6-15564.3.1 session對象對象l從一個客戶打開瀏覽器連接到服務(wù)器開始,到客戶關(guān)閉從一個客戶打開瀏覽器連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離開這個服務(wù)器結(jié)束(期間客戶訪問的是同一個瀏覽器離開這個服務(wù)器結(jié)束(期間客戶訪問的是同一個WEB目錄中的頁面),被稱為一個目錄中的頁面),被稱為一個會話會話。l一個客戶訪問服務(wù)器時,可能會在這個服務(wù)器的幾個頁一個客戶訪問服務(wù)器時,可能會在這個服務(wù)器的幾個頁面之間反復(fù)連接,反復(fù)刷新一個頁面或不斷向一個頁面面之

31、間反復(fù)連接,反復(fù)刷新一個頁面或不斷向一個頁面提交信息等。提交信息等。l如在線商店購物時如在線商店購物時 ,當(dāng)我們把不同頁面的商品分別加入,當(dāng)我們把不同頁面的商品分別加入購物車時,服務(wù)器如何才能知道車里原先有些什么?當(dāng)購物車時,服務(wù)器如何才能知道車里原先有些什么?當(dāng)用戶從選擇商品的頁面轉(zhuǎn)到輸入信用卡號和送達地址的用戶從選擇商品的頁面轉(zhuǎn)到輸入信用卡號和送達地址的頁面,服務(wù)器如何才能記住用戶買了些什么?頁面,服務(wù)器如何才能記住用戶買了些什么?lHTTP是無狀態(tài)(是無狀態(tài)(stateless)協(xié)議。)協(xié)議。2021-6-1557解決方法:解決方法:lSession/Cookie :利用:利用Sessi

32、on/Cookie對象來存儲有關(guān)對象來存儲有關(guān)會話的信息,后繼的各個連接可以查看當(dāng)前會話的信息,后繼的各個連接可以查看當(dāng)前Session/Cookie,提取有關(guān)該會話的完整信息。,提取有關(guān)該會話的完整信息。 l重寫重寫URL :如果客戶端不支持:如果客戶端不支持Cookie,服務(wù)器無法將,服務(wù)器無法將session ID寫到客戶端。服務(wù)器無法識別同一個客戶端。寫到客戶端。服務(wù)器無法識別同一個客戶端。解決該問題的有效方法是解決該問題的有效方法是URL重寫技術(shù)。重寫技術(shù)。 即:把一些標(biāo)識即:把一些標(biāo)識會話的數(shù)據(jù)附加到每個會話的數(shù)據(jù)附加到每個URL的后面,服務(wù)器能夠把該會話的后面,服務(wù)器能夠把該會話

33、標(biāo)識和它所保存的會話數(shù)據(jù)關(guān)聯(lián)起來。標(biāo)識和它所保存的會話數(shù)據(jù)關(guān)聯(lián)起來。 l隱藏表單域隱藏表單域 :通過表單的隱藏域維持會話:通過表單的隱藏域維持會話lHttpSession API : 是一個基于是一個基于Cookie或者或者URL重寫機制重寫機制的高級會話狀態(tài)跟蹤接口。如果瀏覽器支持的高級會話狀態(tài)跟蹤接口。如果瀏覽器支持Cookie,則使,則使用用Cookie;如果瀏覽器不支持;如果瀏覽器不支持Cookie或者或者Cookie功能被功能被關(guān)閉,則自動使用關(guān)閉,則自動使用URL重寫方法。重寫方法。2021-6-1558l在服務(wù)器端,系統(tǒng)在服務(wù)器端,系統(tǒng)JSP引擎為該客戶創(chuàng)建了一個引擎為該客戶創(chuàng)建

34、了一個session對象對象,在客戶端,系統(tǒng)為該客戶創(chuàng)建了,在客戶端,系統(tǒng)為該客戶創(chuàng)建了Cookie對象對象。lsession對象是對象是javax.servlet.http.HttpSession類的一個實例類的一個實例 ,session對象使同一用戶在訪問對象使同一用戶在訪問Web站點時多個頁面間共享信息。服務(wù)器完全可站點時多個頁面間共享信息。服務(wù)器完全可以通過以通過session對象知道這是同一個客戶。對象知道這是同一個客戶。l同一個客戶訪問服務(wù)器中不同同一個客戶訪問服務(wù)器中不同Web目錄時,目錄時,JSP引擎為該客戶創(chuàng)建不同的引擎為該客戶創(chuàng)建不同的session對象對象2021-6-1

35、559l當(dāng)當(dāng)JSP引擎為客戶創(chuàng)建一個引擎為客戶創(chuàng)建一個session對象后,這個對象后,這個session對象被分配了一個對象被分配了一個String類型的類型的ID號,號,JSP引引擎同時將此擎同時將此ID號發(fā)送到客戶端,存放在號發(fā)送到客戶端,存放在Cookie中。中。l同一客戶會話的同一客戶會話的session對象和對象和Cookie對象建立了一對象建立了一一對應(yīng)關(guān)系。即,每一客戶會話信息保存在一對應(yīng)關(guān)系。即,每一客戶會話信息保存在session/Cookie對中。對中。l當(dāng)用戶再次訪問連接該服務(wù)器的其他頁面時,就不再當(dāng)用戶再次訪問連接該服務(wù)器的其他頁面時,就不再分配給用戶新的分配給用戶新

36、的session對象對象l直到關(guān)閉瀏覽器后,服務(wù)器端該用戶的直到關(guān)閉瀏覽器后,服務(wù)器端該用戶的session對象才對象才取消,并且和用戶的對應(yīng)關(guān)系也取消取消,并且和用戶的對應(yīng)關(guān)系也取消 session對象與對象與Cookie對象對象2021-6-1560session對象與對象與Cookie對象(續(xù))對象(續(xù))存儲位置不同存儲位置不同Session對象保存在服務(wù)器內(nèi)存中對象保存在服務(wù)器內(nèi)存中Cookie對象保存在客戶端計算機硬盤中對象保存在客戶端計算機硬盤中生存期不同生存期不同Session對象客戶關(guān)閉瀏覽器或會話失效時消失對象客戶關(guān)閉瀏覽器或會話失效時消失Cookie對象一直保存在客戶端計算

37、機硬盤中,或用對象一直保存在客戶端計算機硬盤中,或用setMaxAge()設(shè)置設(shè)置2021-6-1561session對象與對象與Cookie對象(續(xù))對象(續(xù))安全性安全性Session對象安全性高對象安全性高Cookie對象安全性差對象安全性差實現(xiàn)方式實現(xiàn)方式Session對象記錄會話的持續(xù)過程,直至?xí)捊K止對象記錄會話的持續(xù)過程,直至?xí)捊K止Cookie對象在后繼的請求中由客戶端發(fā)送給服務(wù)器,對象在后繼的請求中由客戶端發(fā)送給服務(wù)器,以確定用戶的身份以確定用戶的身份2021-6-1562session對象的主要方法對象的主要方法 2021-6-156. session對象的

38、對象的ID標(biāo)識標(biāo)識 您在訪問您在訪問id.jsp頁面頁面 您的您的session對象的對象的ID是:是: FORM action= method=post name=form 2021-6-1564 你在訪問你在訪問liu頁面頁面 您的您的session對象的對象的ID是:是: 單擊超連接單擊超連接,連接到連接到wang頁面頁面 A HREF= 歡迎到歡迎到wang頁面來!頁面來!2021-6-1565 你在訪問你在訪問file頁面頁面 您的您的session對象的對象的ID是:是: 單擊超連接單擊超連接,返回到返回到ID頁面頁面 歡迎到歡迎到ID頁面來!頁面來! 2021-6-15664.3

39、.1.2. 在會話對象中保存數(shù)據(jù)在會話對象中保存數(shù)據(jù)l保存和獲得保存和獲得session對象中的數(shù)據(jù)是對象中的數(shù)據(jù)是JSP頁面常做的工作,頁面常做的工作,需要使用需要使用getAttribute()和和setAttribute()方法。方法。l書上例子書上例子4-7在在session對象中保存數(shù)據(jù)對象中保存數(shù)據(jù)num,這樣服務(wù),這樣服務(wù)器可以告訴客戶他訪問該頁面一共多少次,只要客戶不器可以告訴客戶他訪問該頁面一共多少次,只要客戶不關(guān)閉瀏覽器。刷新關(guān)閉瀏覽器。刷新13次后運行結(jié)果如圖所示。次后運行結(jié)果如圖所示。 這是第這是第 次訪問該頁面次訪問該頁面2021-6-1567例:例:main.jsp

40、輸入您的姓名:輸入您的姓名: 歡迎歡迎訪問站點,請到訪問站點,請到購書頁面選擇書籍購書頁面選擇書籍 進入購書頁面進入購書頁面 2021-6-15682021-6-15692021-6-15704.3.2 application對象對象lapplication對象負責(zé)提供應(yīng)用程序在服務(wù)器中運行時的一些對象負責(zé)提供應(yīng)用程序在服務(wù)器中運行時的一些全局信息。全局信息。l服務(wù)器啟動時就創(chuàng)建一個服務(wù)器啟動時就創(chuàng)建一個application對象,不同客戶在該服對象,不同客戶在該服務(wù)器的各個頁面之間鏈接時,共享使用同一個務(wù)器的各個頁面之間鏈接時,共享使用同一個application對對象,直到服務(wù)器關(guān)閉該對象

41、才消失。象,直到服務(wù)器關(guān)閉該對象才消失。 2021-6-1571例例. 用用application對象制作留言板對象制作留言板l客戶在客戶在submit.jsp中輸入姓名、留言標(biāo)題和留言內(nèi)容。這中輸入姓名、留言標(biāo)題和留言內(nèi)容。這些信息提交給些信息提交給messagePane.jsp。該頁面將客戶信息存。該頁面將客戶信息存入向量,并將向量存放在入向量,并將向量存放在application對象中。當(dāng)查看留對象中。當(dāng)查看留言板時,言板時,showMessage.jsp負責(zé)從負責(zé)從application對象中取對象中取出向量,并遍歷向量顯示其中的所有留言。出向量,并遍歷向量顯示其中的所有留言。2021

42、-6-1572 輸入您的名字:輸入您的名字: 輸入您的留言標(biāo)題:輸入您的留言標(biāo)題: 輸入您的留言:輸入您的留言: 例子:例子:submit.jsp2021-6-1573 例子:例子: messagePane.jspservlet中中,application是當(dāng)是當(dāng)前前pageContext所得所得到的到的servletContext的對象引用。的對象引用。 servletContext接口是接口是Servlet中最大的一個接口,中最大的一個接口,呈現(xiàn)了呈現(xiàn)了web應(yīng)用的應(yīng)用的Servlet視視圖。圖。ServletContext實例是實例是通過通過 getServletContext()方法獲得的方法獲得的 2021-6-1574 % String name=request.getParameter(peopleName); String title=request.getParameter(Title); String messages=request.getParameter(messages); if(name=null) name=guest+(int)(Math.random()*10000); if(ti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論