ASP系列教程第8課 Request對(duì)象及其使用_第1頁
ASP系列教程第8課 Request對(duì)象及其使用_第2頁
ASP系列教程第8課 Request對(duì)象及其使用_第3頁
ASP系列教程第8課 Request對(duì)象及其使用_第4頁
ASP系列教程第8課 Request對(duì)象及其使用_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、8.1 課前導(dǎo)讀8.2 課堂教學(xué)8.3 上機(jī)練習(xí)8.4 課后作業(yè)第8課 Request對(duì)象及其使用 18.1 課前導(dǎo)讀 輸入、處理和輸出是所有程序設(shè)計(jì)語言的根本模式,ASP作為一種類程序設(shè)計(jì)語言也不例外。在ASP中,Request和Response對(duì)象分別完成輸入和輸出的大局部功能,是ASP技術(shù)中非常重要的兩個(gè)對(duì)象: Response對(duì)象:用來訪問效勞器端所創(chuàng)立的并發(fā)回到客戶端的響應(yīng)信息,包括直接發(fā)送信息給瀏覽器、重定向?yàn)g覽器到另一個(gè)URL或設(shè)置cookie的值。它也提供了一系列的方法用來創(chuàng)立輸出,例如無處不在的Response.Write方法。2 Request對(duì)象:為腳本提供了當(dāng)客戶端請(qǐng)求

2、一個(gè)頁面或者傳遞一個(gè)窗體時(shí),客戶端提供的全部信息。這包括能指明瀏覽器和用戶的HTTP變量,在這個(gè)域名下存放在瀏覽器中的cookie,任何作為查詢字符串而附于URL后面的字符串或頁面的段中的HTML控件的值。也提供使用SecureSocketLayer(SSL)或其他加密通信協(xié)議的授權(quán)訪問,及有助于對(duì)連接進(jìn)行管理的屬性。 值得一提的是:雖然Request對(duì)象的屬性與方法各有一個(gè),比Response對(duì)象的9個(gè)屬性8種方法少了許多,但Request對(duì)象的集合確有5種,除Cookies集合與Response對(duì)象的Cookies集合相對(duì)應(yīng)外,新增的4種集合大大豐富了Request對(duì)象獲取輸入信息的能力。

3、38.2 課堂教學(xué) 8.2.1 Request對(duì)象概述 8.2.2 ASP與表單的交互 8.2.3 使用Form集合 8.2.4 使用Querystring集合 8.2.5 使用Cookies集合 8.2.6 使用ClientCertificate集合48.2.1 Request對(duì)象概述 1. Request對(duì)象的集合 2. Request對(duì)象的屬性 3. Request對(duì)象的方法 4. Request對(duì)象的使用58.2.1 Request對(duì)象概述 Request 對(duì)象是負(fù)責(zé)從客戶端瀏覽器獲取用戶信息的對(duì)象。它是ASP中重要的效勞器內(nèi)置對(duì)象,它連接著Web效勞器和Web客戶端程序。利用Requ

4、est對(duì)象可以接收基于HTTP請(qǐng)求的所有用戶信息,如用Post方法或Get方法傳送來的參數(shù)以及Cookie和Server Variable等等。61. Request對(duì)象的集合 Request對(duì)象提供了5個(gè)集合,可以用來獲取客戶端對(duì)Web效勞器請(qǐng)求的各類信息,其說明見表8-1。表8-1 Request對(duì)象的集合及說明集合名稱說明ClientCertificate當(dāng)客戶端訪問一個(gè)頁面或其他資源時(shí),用來向服務(wù)器表明身份的客戶證書的所有字段或條目的數(shù)值集合,每個(gè)成員均是只讀Cookies根據(jù)用戶的請(qǐng)求,用戶系統(tǒng)發(fā)出的所有cookie的值的集合,這些Cookie僅對(duì)相應(yīng)的域有效,每個(gè)成員均為只讀For

5、mMETHOD的屬性值為POST時(shí),所有作為請(qǐng)求提交的段中的HTML控件單元的值的集合,每個(gè)成員均為只讀QueryString依附于用戶請(qǐng)求的URL后面的名稱數(shù)值對(duì)或者作為請(qǐng)求提交的且METHOD屬性值為GET(或者省略其屬性)的,或中所有HTML控件單元的值,每個(gè)成員均為只讀ServerVariables隨同客戶端請(qǐng)求發(fā)出的HTTP報(bào)頭值,以及Web服務(wù)器的幾種環(huán)境變量的值的集合,每個(gè)成員均為只讀 在這些集合之中,最常使用的是Form、Cookies和QueryString集合。72. Request對(duì)象的屬性 Request對(duì)象唯一的屬性是TotalBytes,它提供關(guān)于用戶請(qǐng)求的字節(jié)數(shù)量

6、的信息:返回由客戶端發(fā)出的請(qǐng)求信息的字節(jié)數(shù)。使用中通常關(guān)注客戶端各項(xiàng)請(qǐng)求信息的值而非整個(gè)請(qǐng)求字符串,因此該屬性很少被用于ASP頁。3. Request對(duì)象的方法 Request對(duì)象唯一的方法是BinaryRead,它允許訪問從用戶頁面段中傳遞給效勞器的請(qǐng)求信息的完整內(nèi)容。其語法格式為:Request.BinaryRead(count)8 說明: count表示當(dāng)數(shù)據(jù)作為POST請(qǐng)求的一局部發(fā)往效勞器時(shí),從客戶請(qǐng)求中獲得數(shù)據(jù)的字節(jié)數(shù)。 該方法返回一個(gè)Variant數(shù)組(或者SafeArray)。 如果ASP代碼已經(jīng)引用了Request.Form集合,這個(gè)方法就不能再用。同樣,如果用了Binary

7、Read方法,也不能再訪問Request.Form集合。94. Request對(duì)象的使用 在ASP中,當(dāng)客戶端請(qǐng)求一個(gè)頁面或傳遞一個(gè)表單時(shí),Request對(duì)象為腳本提供了客戶端瀏覽器所提供的全部信息,包括用戶請(qǐng)求的所有信息、用戶為該域名存放在瀏覽器下的Cookie、使用Secure Socket Layer(SSL)或其它加密通信協(xié)議的授權(quán)訪問以及對(duì)連接進(jìn)行管理的屬性等。Request對(duì)象可以利用集合、屬性、方法等來進(jìn)行參數(shù)的傳遞。其語法格式為:Request. 集合 | 屬性 | 方法 ( 變量 )10 Request對(duì)象中有5個(gè)集合可以用來完成客戶端對(duì)ASP效勞器的請(qǐng)求的響應(yīng)。實(shí)際上Req

8、uest對(duì)象是由一群對(duì)象的集合組成,在引用客戶端頁面定義的變量時(shí),有多種方法可以使用。例如,要在Request對(duì)象的Form中取得名為“姓名的信息,可以使用下述賦值命令:name=Request.Form(姓名) 也可以不指定集合名(Form),直接使用命令:name=Request(姓名) 程序會(huì)以QueryString、Form、Cookies和ServerVariables的順序搜索所有集合,當(dāng)發(fā)現(xiàn)一個(gè)匹配的變量時(shí),就認(rèn)定它是要引用的成員。當(dāng)然,編程實(shí)踐中,為防止不同集合中同名變量引用的二義性,最好顯式地指定集合。118.2.2 ASP與表單的交互 在動(dòng)態(tài)網(wǎng)頁設(shè)計(jì)中,表單是必不可少的元素

9、,許多功能的實(shí)現(xiàn)都與表單密不可分。表單的主要功能是接受用戶填寫在表單中的文字、選擇項(xiàng)等內(nèi)容,在HTTP的POST方法之后,由客戶端瀏覽器將信息發(fā)送到效勞器端。 由表單接受用戶輸入的信息一般要按照程序預(yù)設(shè)的邏輯判斷進(jìn)行檢查,這種檢查根據(jù)需要可以在客戶端或效勞器端進(jìn)行。客戶端的邏輯判斷一般與表單放在一個(gè)頁面內(nèi),常適用于較為簡(jiǎn)單的判斷;效勞器端的邏輯判斷只能由表單內(nèi)action屬性所指向的ASP網(wǎng)頁來完成,由于效勞器端有功能更為強(qiáng)大的對(duì)象模型,能實(shí)現(xiàn)更為復(fù)雜的邏輯判斷,因此適用于復(fù)雜的邏輯判斷。12 網(wǎng)頁中的表單與集合Form是兩個(gè)不同的概念,雖然它們的英文名稱相同。表單的功能是在客戶端接受用戶的輸

10、入信息,是在客戶端由瀏覽器解釋的HTML標(biāo)記,而集合Form則是在效勞器端的一種數(shù)據(jù)結(jié)構(gòu)。一般情況下,客戶端表單的信息在執(zhí)行網(wǎng)頁的Post方法后,在效勞器端Request對(duì)象的Form集合中會(huì)有相應(yīng)的量與之對(duì)應(yīng)。13 在HTML網(wǎng)頁中,表單以標(biāo)記開始和結(jié)束。表單標(biāo)記的語法格式為: 其中 “URL設(shè)置表單處理程序的相對(duì)或絕對(duì)位置(假設(shè)要將表單數(shù)據(jù)寄到電子郵件信箱,可以設(shè)置該電子郵件信箱的URL;假設(shè)沒有設(shè)置Action屬性的值,表示使用默認(rèn)的表單處理程序); “傳送方式用于指明交互表單的信息傳送方式,有Post和Get兩種。14 其他屬性及其說明見表8-2。表8-2 表單的其他屬性說明屬性名說明

11、accept-charset設(shè)置表單數(shù)據(jù)的字符編碼方式,服務(wù)器依據(jù)該屬性指定的字符編碼方式處理表單數(shù)據(jù)。字符編碼方式定義于RFC2045,中間以逗號(hào)隔開accept設(shè)置作為服務(wù)器處理表單數(shù)據(jù)的Mime類型enctype設(shè)置將表單數(shù)據(jù)返回服務(wù)器時(shí)所采取的編碼方式,默認(rèn)值為application/x-,若您允許瀏覽者上傳文件給服務(wù)器,那么ENCTYPE的值須為Multipart/Form-Data;若要將表單數(shù)據(jù)寄到電子郵件信箱,那么enctype的值可為Text/P設(shè)置表單的名稱(限英文),此名稱可供Script使用。target設(shè)置用來顯示表單處理程序結(jié)果的目標(biāo)框架。 在表單

12、中可以使用、 、 、 等控件來定義表單信息項(xiàng),參見第6課。15 單擊表單中的“Submit控件,將觸發(fā)表單的提交事件:onSubmit;單擊表單中的“Reset控件,將觸發(fā)表單的重置事件:onReset。 使用表單傳送信息的方式通常有下述三種: 由HTML網(wǎng)頁中的表單傳送信息給處理該信息的ASP文件; 由ASP文件中的表單傳送信息給另一個(gè)ASP文件,后者處理該信息; 在ASP文件中的表單所傳送的信息由其自身進(jìn)行處理。 其中第3種方式效率較高,但編程較復(fù)雜。16 【例8-1】ASP與表單的交互。 使用HTML網(wǎng)頁中表單輸入并提交信息,網(wǎng)頁文件名為8_1.htm,其代碼如下: 利用表單輸入信息 請(qǐng)

13、輸入 姓名: 性別:男 女 17 當(dāng)用戶在瀏覽器中輸入表單數(shù)據(jù)并單擊“提交按鈕后,效勞器端的表單處理程序8_1_1.asp可以利用Request對(duì)象讀取瀏覽器端的數(shù)據(jù)并返回相應(yīng)信息。表單處理程序8_1_1.asp的代碼如下: 使用Request對(duì)象獲得表單信息 歡送您登錄本站點(diǎn) 如不對(duì),返回 18 上例可以改為使用一個(gè)ASP文件傳送和處理信息。 【例8-2】表單所傳送的信息由其所在的ASP文件自身進(jìn)行處理。 代碼如下: 利用表單輸入信息 ASP與表單的交互% xm=Request.Form(姓名) xb=Request.Form(性別) if xm then Response.write 歡送

14、登錄本站點(diǎn), Response.write 您是 & xm if xb =男 then Response.write 大俠 else Response.write 俠女 end if Response.write 如不對(duì),返回 Response.end end if%19 請(qǐng)輸入 姓名: 性別:男 女 208.2.3 使用Form集合 當(dāng)使用表單的Post方式提交數(shù)據(jù)時(shí),表單中的數(shù)據(jù)被保存在Request對(duì)象的Form集合中。使用Form集合來傳遞數(shù)據(jù)的語法格式如下:Request.Form(element)(index)|.Count 其中,element為Form集合所要檢索的表單元素(控

15、件)名稱;Index用于指定表單元素多個(gè)值中的某一個(gè),當(dāng)然此表單元素有多個(gè)值時(shí)此項(xiàng)才有意義;Count用于指定表單某元素的值的個(gè)數(shù)。211. 讀取Form集合中特定元素對(duì)象的值2. 讀取Form集合中所有元素對(duì)象的值3. 讀取Form集合的某元素對(duì)象的特定值4. 讀取Form集合的某元素對(duì)象的全部參數(shù)值 221. 讀取Form集合中特定元素對(duì)象的值 【例8-3】讀取Form集合中特定元素對(duì)象的值。 首先建立一個(gè)輸入數(shù)據(jù)的HTML表單文件8_3.htm,其代碼如下: 輸入數(shù)據(jù)的表單 輸入數(shù)據(jù)的表單 姓名: 性別:男 女 密碼: 愛好: 音樂 汽車 釣魚 集郵 繪畫23 學(xué)歷: 小學(xué) 中學(xué) 大專

16、本科 研究生 生活格言: 單擊“提交按鈕,調(diào)用表單處理程序8_3.asp將用戶輸入的信息傳遞給效勞器,經(jīng)處理后反響給用戶,顯示結(jié)果。24 文件8_3.asp的代碼如下: Request對(duì)象的Form集合例子 Request對(duì)象的Form集合例子 歡送您登錄本站點(diǎn)% Response.write(您的姓名是: & Request.Form(xm) & ) Response.write(您的性別是: & Request.Form(xb) & ) Response.write(您的密碼是: & Request.Form(mm) & ) Response.write(您的愛好是: & Request.

17、Form(ah) & ) Response.write(您的學(xué)歷是: & Request.Form(xl) & ) Response.write(您的生活格言是:) Response.Write Request.Form(adage)&%這些信息對(duì)嗎?如不對(duì),返回252. 讀取Form集合中所有元素對(duì)象的值 上面介紹了如何傳遞Form集合中特定元素對(duì)象的值,下面介紹如何讀取Form集合中所有元素對(duì)象的值。 【例8-4】在例8-3中使用循環(huán)語句讀取Form集合中所有元素對(duì)象的值。 有兩種循環(huán)語句可以讀取Form集合中所有元素對(duì)象的值。26 使用“For each In循環(huán)語句,將文件8_3.as

18、p的代碼改為: 用For each In語句讀取Form集合例子 用For each In語句讀取Form集合例子 歡送您登錄本站點(diǎn)% For each Item in Request.Form Response.Write(Item&:) Response.Write(Request.Form(Item)&) Next% 這些信息對(duì)嗎? 如不對(duì),返回 27 使用“Fornext循環(huán)語句,將文件8_3.asp的代碼改為: 用Fornext語句讀取Form集合例子 Fornext語句讀取Form集合例子 歡送您登錄本站點(diǎn)% For I=1 to Request.Form.count Respon

19、se.Write(Request.Form(I)&) Next% 這些信息對(duì)嗎? 如不對(duì),返回 這種方法不能得到對(duì)象的名稱,顯示結(jié)果如圖8-4所示。283. 讀取Form集合的某元素對(duì)象的特定值 當(dāng)Form集合中的元素對(duì)象具有多個(gè)值時(shí)(如checkbox、select等控件對(duì)象),欲讀取某個(gè)特定的參數(shù)可以使用Index來讀取。 【例8-5】讀取Form集合的某個(gè)多值元素的特定值。輸入數(shù)據(jù)的HTML表單文件8_5.htm同8_3.htm,表單處理程序8_5.asp的代碼如下: 讀取Form集合的某個(gè)多值元素的特定參數(shù)值 讀取Form集合的某個(gè)多值元素的特定參數(shù)值 歡送您登錄本站點(diǎn)% Respon

20、se.Write(Request.Form(xm)&的第二愛好是:) Response.Write(Request.Form(ah)(1)&)% 這些信息對(duì)嗎? 如不對(duì),返回 運(yùn)行結(jié)果 294. 讀取Form集合的某元素對(duì)象的全部參數(shù)值 與讀取Form集合中所有元素對(duì)象的值一樣,也可以采用兩種循環(huán)語句來讀取Form集合的某元素對(duì)象的全部參數(shù)值。以Fornext循環(huán)為例。 【例8-6】讀取Form集合的某元素對(duì)象的全部參數(shù)值,如圖8-6所示。 輸入數(shù)據(jù)的HTML表單文件8_6.htm同8_3.htm,表單處理程序8_6.asp的代碼如下:30 讀取Form集合的某元素對(duì)象的全部參數(shù)值 讀取For

21、m集合的某元素對(duì)象的全部參數(shù)值 歡送您登錄本站點(diǎn)% For I=1 to Request.Form(愛好).count Response.Write(Request.Form(xm)&的第&I&愛好是:) Response.Write(Request.Form(ah)(I)&) Next% 這些信息對(duì)嗎? 如不對(duì),返回 程序運(yùn)行結(jié)果。 說明:在利用Form集合讀取參數(shù)時(shí),與之相對(duì)應(yīng)的HTML頁面中的表單的Method屬性一定要設(shè)置成Post才行,否則將無法讀取參數(shù)。318.2.4 使用Querystring集合 Querystring集合是Request對(duì)象中最常用的另外一個(gè)集合,與Form集

22、合不同,Querystring集合讀取參數(shù)時(shí),HTML表單的Method應(yīng)設(shè)置成Get。 除了讀取表單對(duì)象傳遞的參數(shù)之外,Querystring集合還可以通過讀取HTTP查詢字符串中的參數(shù)值來傳遞參數(shù)。使用Querystring集合的語法格式如下:Request.Querystring(變量)(index)|.Count 其中,“變量為在HTTP查詢字符串中指定要檢索的變量名稱;Index用于檢索變量多個(gè)值中的某一個(gè),當(dāng)然此變量有多個(gè)值時(shí)此項(xiàng)才有意義;Count用于指定Querystring中某變量值的個(gè)數(shù)。328.2.4 使用Querystring集合1. 利用Querystring集合讀取

23、 表單的參數(shù)2. 利用Querystring集合讀取 HTTP查詢字符串中的參數(shù)331. 利用Querystring集合讀取表單的參數(shù) 利用Querystring集合讀取表單的參數(shù)應(yīng)將表單的Method屬性設(shè)置為Get。其方法與使用Form集合相似。 【例8-7】利用Querystring集合讀取表單的參數(shù)。 輸入數(shù)據(jù)的HTML表單文件8_7.htm與8_3.htm相似,只是表單的Method屬性設(shè)置為Get,表單處理程序8_7.asp的代碼如下:34 Request對(duì)象的Querystring集合例子 Request對(duì)象的Querystring集合例子 歡送您登錄本站點(diǎn)% Phone=Req

24、uest(UserPhone) Response.write(您的姓名是: & Request.Querystring(xm) & ) Response.write(您的性別是: & Request.Querystring(xb) & ) Response.write(您的密碼是: & Request.Querystring(mm) & ) Response.write(您的愛好是: & Request.Querystring(ah) & ) Response.write(您的學(xué)歷是: & Request.Querystring(xl) & ) Response.write(您的生活格言是:)

25、 Response.Write Request.Querystring(adage)&%這些信息對(duì)嗎?如不對(duì),返回運(yùn)行結(jié)果 352. 利用Querystring集合讀取HTTP查詢字符串中的參數(shù) HTTP查詢字符串中的變量值由問號(hào)(?)后面的值指定。Querystring集合可以檢索HTTP查詢字符串中的變量值。 當(dāng)表單的Method屬性為Get時(shí),表單中的數(shù)據(jù)被保存在Querystring集合中,當(dāng)表單的Method屬性為Post時(shí),Querystring取回標(biāo)識(shí)在URL后面的HTTP查詢字符串中的變量值。 讀取Querystring中某個(gè)變量值有三種方法: 通過Request(變量)讀取,

26、其中“變量是指Querystring集合的變量。36【例8-8】通過Request(variable)方法讀取Querystring的某個(gè)變量。 編寫ASP程序8_8.asp如下: 通過Request(variable)方法讀取Querystring的變量 通過Request(variable)方法讀取Querystring的變量 ASP培訓(xùn)班通訊錄 趙一 錢二 張三 李四 王五 孫六 該程序提供鏈接方式(鏈接到ASP程序8_8_1.asp),傳遞HTTP查詢字符串,運(yùn)行結(jié)果。37 ASP程序8_8_1.asp通過Request(variable)方法讀取Querystring的變量,其代碼如

27、下: 通過Request(variable)方法讀取Querystring的變量 通過Request(variable)方法讀取Querystring的變量 的通訊錄是 : 住址: 38 通過Request.Querystring(變量)讀取,其中“變量是Querystring集合的變量。 只需將ASP程序8_8_1.asp改為: 通過Request.Querystring(variable)方法讀取Querystring的變量 通過Request.Querystring(variable)方法讀取Querystring的變量 的通訊錄是 : 住址: 39 通過Request.Querystr

28、ing(Serial)讀取,其中Serial是Querystring集合的變量的序號(hào)。 將ASP程序8_8_1.asp改為: 通過Request.Querystring(variable)方法讀取Querystring的變量 通過Request.Querystring(variable)方法讀取Querystring的變量 的通訊錄是 : 住址: 三種方法所得到的結(jié)果是相同的。408.2.5 使用Cookies集合 Cookies集合是Response對(duì)象和Request對(duì)象共有的一項(xiàng)經(jīng)常用到的集合。 用戶在通過HTTP協(xié)議訪問一個(gè)主頁時(shí),每次連接時(shí)都要重新開始。因此,如果要判別某個(gè)用戶是否曾

29、經(jīng)進(jìn)入本網(wǎng)站,那么只能使用Cookies了。當(dāng)用戶第一次訪問網(wǎng)站時(shí),可以利用Response對(duì)象的Cookies集合將數(shù)據(jù)存儲(chǔ)到客戶端計(jì)算機(jī),當(dāng)用戶再次訪問此網(wǎng)站時(shí),則可利用Request對(duì)象的Cookies集合取得相關(guān)信息。418.2.5 使用Cookies集合 1. Cookies技術(shù) 2. Cookies的特點(diǎn) 3. Cookies的屬性 4. Cookies的使用 421. Cookies技術(shù) cookies是一種Web效勞器通過瀏覽器在訪問者的硬盤上存儲(chǔ)信息的手段。而將cookies用于INTERNET的本意是為了克服HTTP天生的無記錄狀態(tài),眾所周知,瀏覽器與Web效勞器是利用HT

30、TP進(jìn)行通信的,而HTTP又是無記錄的,當(dāng)一個(gè)請(qǐng)求發(fā)送到Web效勞器時(shí),無論其是否是初次來訪,效勞器都會(huì)把它當(dāng)作第一次來對(duì)待,根本沒有對(duì)它的記憶,為了克服這一缺陷,客戶端永久性的cookies應(yīng)運(yùn)而生。 編寫cookies文件時(shí),用戶需要的信息主要有cookies的截止日期、cookies訪問域名的URL、cookies變量名稱和一些與cookies變量有聯(lián)系的數(shù)據(jù)。43 相對(duì)其較簡(jiǎn)單的包含內(nèi)容,cookies能為站點(diǎn)和用戶所帶來的好處實(shí)在太多,首先它可以讓W(xué)eb站點(diǎn)跟蹤特定訪問者的訪問次數(shù)、最后訪問時(shí)間和訪問者進(jìn)入站點(diǎn)的路徑;其次它可以告訴在線廣告商廣告被點(diǎn)擊的次數(shù);再者它可讓用戶在不鍵入密

31、碼和用戶名的情況下進(jìn)入曾經(jīng)瀏覽過的一些站點(diǎn);另外還可以幫助站點(diǎn)統(tǒng)計(jì)用戶資料以實(shí)現(xiàn)個(gè)性化效勞。 Cookies是通過HTTP Headers從效勞器端返回到瀏覽器上。首先,效勞器端在響應(yīng)中利用Set-Cookies Headers來創(chuàng)立一個(gè)Cookies,然后,瀏覽器在它的請(qǐng)求中通過Cookie Headers包含這個(gè)已創(chuàng)立的Cookies,并把它返回效勞器,從而完成瀏覽器的認(rèn)證。442. Cookies的特點(diǎn) 在HTTP協(xié)議下,Cookies僅僅是一個(gè)文本文件,是效勞器在瀏覽器端寫入的小文件。 Cookies存放在瀏覽器端的本機(jī)磁盤上,而不是存放在效勞器端。通常,Cookies包含用戶的有關(guān)信

32、息(如身份識(shí)別號(hào)碼、密碼、用戶在Web站點(diǎn)上購(gòu)物的方式或用戶訪問該站點(diǎn)的次數(shù)等)。無論何時(shí)用戶連接到效勞器,Web站點(diǎn)都可以訪問Cookies信息。45 使用Cookies的好處有以下幾點(diǎn): 可以自由決定Cookies的生命周期,需要的話,甚至可以將Cookie的生命周期設(shè)置成數(shù)周、數(shù)月或數(shù)年,不必?fù)?dān)憂cookies會(huì)因自動(dòng)消失而失去某些信息。 由于cookies是存放在瀏覽器端的本機(jī)磁盤上,故不會(huì)占用效勞器端的磁盤空間。 cookies可以記錄瀏覽者的個(gè)人信息,因此,站點(diǎn)的制作者就可以根據(jù)cookies記錄的信息,設(shè)計(jì)出獨(dú)具瀏覽者個(gè)人風(fēng)格的網(wǎng)頁或信息。46 使用cookies的缺點(diǎn): 假設(shè)瀏

33、覽者禁止效勞器在瀏覽器端寫入cookies,cookies就無法記錄個(gè)人信息。 只能記錄字符串、數(shù)值等簡(jiǎn)單的數(shù)據(jù)類型,無法記錄對(duì)象、數(shù)組等復(fù)雜的數(shù)據(jù)類型。 由于cookies存放在瀏覽器端,所以它可能被瀏覽者刪除或拒絕寫入。 cookies會(huì)造成平安上的威脅,導(dǎo)致個(gè)人信息被竊取。473. Cookies的屬性 Cookies共有五種屬性,指定cookies的有關(guān)信息。Cookies屬性及其說明見表8-3。表8-3 Cookies屬性及其說明屬性名稱說明Domain指定只有某個(gè)Domain(網(wǎng)域)可以存取該cookie,只寫屬性Expirescookie的過期日期。為了在會(huì)話結(jié)束后將cookie

34、存儲(chǔ)在客戶端磁盤上,必須設(shè)置該日期。若此項(xiàng)屬性的設(shè)置未超過當(dāng)前日期,則在任務(wù)結(jié)束后cookie將到期,只寫屬性HasKeys指定cookie是否包含關(guān)鍵字Key,只讀屬性Path指定只有特定路徑可以存取該cookie,默認(rèn)為應(yīng)用程序的路徑,只寫屬性Secure用于設(shè)定Cookie是否在一個(gè)安全的渠道傳遞。當(dāng)一個(gè)安全渠道沒有在HTTP首頁被發(fā)現(xiàn),Cookie信息將不發(fā)送484. Cookies的使用 Cookies是通過Response對(duì)象的Cookies集合來創(chuàng)立的,當(dāng)然,如果Cookies已存在,則可以通過Response對(duì)象來設(shè)置新的Cookies值并刪除舊值。其語法格式如下:Respon

35、se.Cookies(cookies名)(key)|.屬性=值 說明: cookies名是用戶自定義的Cookies名稱; key為可選參數(shù),如指定Key,則Cookies就是一個(gè)字典,該參數(shù)值將被設(shè)置為“值,并可以在以后的接收中使用;49 “值指定分配給Cookies屬性的值。 屬性是指Cookies屬性。 Cookies默認(rèn)的生命周期起始于它被寫入瀏覽器端的那一刻開始,結(jié)束于瀏覽器結(jié)束執(zhí)行時(shí);如果要設(shè)置Cookies的存在期限,可以使用Response.Cookies(name).Expries屬性;當(dāng)存在期限截止時(shí),Cookies將自動(dòng)從瀏覽器端的本機(jī)磁盤上刪除。 Reponse對(duì)象的C

36、ookies集合用于寫入Cookies,而Request對(duì)象的Cookies集合則可以讀出Cookies并向效勞器端傳遞。50 (1) 不帶Key的Cookies的創(chuàng)立和讀取 對(duì)于不帶Key的Cookies的創(chuàng)立,只要指定Cookies的參數(shù)和其相應(yīng)的值即可。 【例8-9】創(chuàng)立兩個(gè)cookies:myBox和mySphere。如以下程序所示: Cookies例子 51 代碼以8-9.asp存盤,并運(yùn)行即創(chuàng)立了Cookies。創(chuàng)立好Cookies以后,可以通過如下的語句讀取相應(yīng)的值:Response.Cookies(cookies名) 其中,cookie名是已創(chuàng)立的Cookies的名稱。52 【

37、例8-10】讀取8-9.asp創(chuàng)立的Cookies中“myBox的值。 8-10.asp的代碼如下: 讀取不帶Key的Cookie 讀取不帶Key的Cookie% Response.Write mybox值: Response.Write(Request.Cookies(mybox)&) if Response.Cookies(mybox).Haskeys=False then Response.Write(mybox未帶Key) Else Response.Write(mybox帶有Key) end if% 53 如果只是在當(dāng)前的網(wǎng)頁里使用Cookies,則上面的語句已經(jīng)足夠了。如果希望在重

38、新啟動(dòng)瀏覽器后仍舊可以識(shí)別這個(gè)Cookies,就必須將Cookies存入到瀏覽器的文件當(dāng)中。這只需設(shè)置Cookies在客戶端可以保存的時(shí)間。將8-9.asp改為如下代碼: Cookies例子 54 其中date()+7表示保存的時(shí)間為7天。每一個(gè)Web效勞器都會(huì)產(chǎn)生一個(gè)與其網(wǎng)站相關(guān)的Cookie文件名稱,并將其儲(chǔ)存在客戶端的計(jì)算機(jī)中。通常,如果使用Win98/Me系統(tǒng),Cookie文件存放在C:WindowsCookies目錄中;如果使用的是Win2000/XP系統(tǒng),Cookie文件存放在C:Documents and Settings中該用戶目錄下的Cookies子目錄中。 運(yùn)行修改后的程序

39、8-10.asp,就可以在客戶端的本機(jī)磁盤中找到Cookies文件,如圖8-10所示。55 (2) 帶Key的Cookies的創(chuàng)立和讀取 一個(gè)Cookie可以有多個(gè)值(這有點(diǎn)像數(shù)組),這樣的Cookie被稱為Cookies字典,Cookies字典中每個(gè)Cookie的值被分配給一個(gè)Key(數(shù)組下標(biāo)),可以設(shè)置指定的Cookie(Key)的值。 【例8-11】創(chuàng)立一個(gè)Cookies字典:myBox,該Cookie包含3個(gè)值:30、40、50,其Key分別是:length、width、height。 程序8-11.asp代碼如下:56 創(chuàng)立一個(gè)Cookies字典例子 說明:在指定其屬性值時(shí),不能帶K

40、ey,否則會(huì)產(chǎn)生錯(cuò)誤。如下述代碼將出現(xiàn)“運(yùn)行錯(cuò)誤。Response.Cookies(myBox)(height).Expires = date()+7 57 對(duì)于Cookies字典,可以通過如下的語句來讀取相應(yīng)的值:Response.Cookies(cookie名)(Key名) 其中,“Key名是已創(chuàng)立的Cookies字典的一個(gè)Key的名稱。也可以通過如下語句讀?。篟esponse.Cookies(Name)(Serial) 其中,Serial是已創(chuàng)立的Cookies字典的Key的序號(hào)。58 【例8-12】讀取Cookies字典myBox的值。 程序8-12.asp代碼如下: 讀取帶Key的C

41、ookies 讀取帶Key的Cookies% Response.Write mybox的值:& Response.Write(Request.Cookies(myBox)(length) & , ) Response.Write(Request.Cookies(myBox)(width) & , ) Response.Write(Request.Cookies(myBox)(height) & ) Response.Write(Request.Cookies(myBox)(1) & , ) Response.Write(Request.Cookies(myBox)(2) & , ) Respo

42、nse.Write(Request.Cookies(myBox)(3) & ) % 程序8-12.asp運(yùn)行結(jié)果如圖8-11所示。59 (3) Cookies的重建 對(duì)于已建立的Cookies,要重建它,只要使用如下的語句即可重建: Response.Cookies(Name)=Value假設(shè)是建立Cookies字典,則還要加上相應(yīng)的Key值。 如果一個(gè)存在的Cookie并沒有一個(gè)Key值,但是Response.Cookies指定了Key的名稱和值,則這個(gè)存在的Cookie將被刪除,并創(chuàng)立新的Key名和值。同樣,如果一個(gè)存在的Cookie有Key值,但是Response.Cookies沒有指定

43、Key名,則這個(gè)存在的Key值將被刪除。例如,先運(yùn)行了例8-9后,又運(yùn)行例8-11,則得到的Cookie文件如圖8-12所示。608.2.6 使用ClientCertificate集合 當(dāng)客戶端通過ASP訪問效勞器的一個(gè)頁面或其它資源時(shí),可以通過Client Certificate集合向效勞器說明身份,而身份的說明則通過“關(guān)鍵字和“關(guān)鍵字子字段兩局部參數(shù)來實(shí)現(xiàn)。具體參數(shù)如表8-2、表8-3所示。 61關(guān)鍵字參數(shù)說明Certificate以ASN.1格式返回所有服務(wù)器端身份權(quán)限的二進(jìn)制信息Flags提供其它額外的服務(wù)器身份權(quán)限的標(biāo)簽,包括ceCertPresent與ceUnrecognizedIssuer等,其常數(shù)值分別為1、2。前者表示服務(wù)器端已經(jīng)提出權(quán)限信息,而后者表示服務(wù)器端最近一次的權(quán)限為未知的發(fā)行者。Issuer以字符串的類型返回發(fā)行者身份權(quán)限的子字段信息,當(dāng)子字段的數(shù)據(jù)超過一個(gè)則以“,”將其分隔,例如:C=US,OU=SoftwareDevelop等SerialNumber將四組十六進(jìn)位序號(hào)以ASCII格式返回,其中以“,”作為分隔符號(hào),例如:FF-00-CCSubject以字符串

溫馨提示

  • 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. 人人文庫(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)論