版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ASP.NET程序設(shè)計(jì),C# Web編程,第5講 內(nèi)部對(duì)象,5.1 ASP.NET內(nèi)部對(duì)象概述 5.2 Page對(duì)象 5.3 Request對(duì)象 5.4 Response對(duì)象 5.5 HttpCookie對(duì)象 5.6 Session對(duì)象 5.7 Application對(duì)象 5.8 Server對(duì)象 5.9 Mail對(duì)象 5.10 viewstate對(duì)象,講解提綱,利用Request對(duì)象的QueryString獲取方法獲取標(biāo)識(shí)在URL后面的信息 利用Request對(duì)象的ServerVariables獲取方法獲取客戶端IP地址等環(huán)境變量 利用Response對(duì)象的Write方法輸出信息及它的省略用
2、法 掌握Response對(duì)象的Redirect方法 利用Response對(duì)象的Cookies方法設(shè)置Cookies的值,利用Request對(duì)象的Cookies獲取方法獲取Cookies的值。 利用Session對(duì)象保存信息 利用Application對(duì)象保存信息 掌握Server對(duì)象的的HTMLencode、Mappath和Execute方法 掌握發(fā)送E-mail的一般方法,本章要點(diǎn),對(duì)象其實(shí)就是可以重用的代碼片斷,類是對(duì)象的定義,對(duì)象是類的實(shí)例。 對(duì)象一般有屬性、方法、事件。 ASP.NET能夠利用成千上萬(wàn)的內(nèi)置對(duì)象。本質(zhì)上前面講的內(nèi)置函數(shù)、Web控件也都可以看作內(nèi)置對(duì)象,都是類實(shí)現(xiàn)的。 本
3、章就講解其中常用的幾個(gè)內(nèi)部對(duì)象,包括Page、Request、Response、HttpCookie、Session、Application、Server、Mail,5.1 ASP.NET內(nèi)部對(duì)象概述,內(nèi)部對(duì)象和其它部分的關(guān)系,內(nèi)部函數(shù),.NET類庫(kù),服務(wù)器控件,內(nèi)部對(duì)象,由System.Web.UI.Page類實(shí)現(xiàn),命名空間System.Web.UI 屬性: IsPostBack IsValid 方法: DataBind(數(shù)據(jù)綁定) 事件: Load (頁(yè)面裝載),5.2 Page對(duì)象,IsPostBack示例,5-1.aspx,在第3章講解了如何獲取客戶填寫在表單中的信息,本節(jié)利用Requ
4、est對(duì)象還可以獲取更多的信息。,5.3 Request對(duì)象,由System.Web.HttpRequest類實(shí)現(xiàn) 命名空間: System.Web 數(shù)據(jù)集合(獲取方法): QueryString、Form、Cookies、ServerVariables、ClientCertificate、Browser 方法: TotalBytes 事件: BinaryRead,5.3.1 Request對(duì)象簡(jiǎn)介,QueryString可以獲取標(biāo)識(shí)在URL后面的所有返回的變量及其值。例如,當(dāng)客戶端送出如下的請(qǐng)求時(shí),QueryString將會(huì)得到name與age兩個(gè)變量的值。 http:/temp.aspx?
5、name=白蕓 1)A 服務(wù)器端控件 屬性NavigateUrl指定要跳轉(zhuǎn)到的Url地址 2)NavigateUrl是可以在服務(wù)器端使用代碼修改,這個(gè)區(qū)別于 3)由于HyperLink本身沒有事件所以要在服務(wù)器端其它事件中設(shè)置NavigateUrl 4)代碼示例 ok,5.11 頁(yè)面跳轉(zhuǎn)方法,3. Response.Redirect()方法 1)過(guò)程:發(fā)送一個(gè)Http響應(yīng)到客戶端,通知客戶端跳轉(zhuǎn)到一個(gè)新的頁(yè)面,然后客戶端再發(fā)送跳轉(zhuǎn)請(qǐng)求到服務(wù)器端。 2)頁(yè)面跳轉(zhuǎn)之后內(nèi)部控件保存的所有信息丟失,當(dāng)A跳轉(zhuǎn)到B,B頁(yè)面將不能訪問(wèn)A頁(yè)面提交的數(shù)據(jù)信息。 3)使用這個(gè)方法使用這個(gè)方法跳轉(zhuǎn)后瀏覽器地址欄的U
6、rl信息改變 4)可以使用Session Cookies Application等對(duì)象進(jìn)行頁(yè)面間的數(shù)據(jù)傳遞 5)重定向操作發(fā)生在客戶端,總共涉及到兩次與Web服務(wù)器的通信:一次是對(duì)原始頁(yè)面的請(qǐng)求,另一次是重定向新頁(yè)面的請(qǐng)求 這個(gè)跳轉(zhuǎn)頁(yè)面的方法跳轉(zhuǎn)的速度不快,因?yàn)樗?個(gè)來(lái)回(2次postback),但他可以跳 轉(zhuǎn)到任何頁(yè)面,沒有站點(diǎn)頁(yè)面限制(即可以由雅虎跳到新浪),同時(shí)不能跳過(guò)登錄保護(hù),5.11 頁(yè)面跳轉(zhuǎn)方法,4. Server.Transfer()方法 1)實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的同時(shí)將頁(yè)面的控制權(quán)進(jìn)行移交 2)頁(yè)面跳轉(zhuǎn)過(guò)程中Request Session等保存的信息不變,跳轉(zhuǎn)之后可以使用上一個(gè)頁(yè)面
7、提交的數(shù)據(jù) 3)跳轉(zhuǎn)之后瀏覽器地址欄的Url不變 4)這種方法的重定向請(qǐng)求是在服務(wù)器端的進(jìn)行的,瀏覽器不知道頁(yè)面已經(jīng)發(fā)生了一次跳轉(zhuǎn) 速度快,只需要一次postback ,但是它必須是在同一個(gè)站點(diǎn)下,因?yàn)樗莝erver的一個(gè)方法。另外,他能跳過(guò)登錄保護(hù)。,5.11 頁(yè)面跳轉(zhuǎn)方法,5. Server.Execute()方法 1)該方法允許當(dāng)前頁(yè)面執(zhí)行同一個(gè)Web服務(wù)器上的另一個(gè)頁(yè)面 2)頁(yè)面執(zhí)行完畢之后重新回到原始頁(yè)面發(fā)出Server.Execute()的位置。 3)這種方式類似針對(duì)頁(yè)面的一次函數(shù)調(diào)用,被請(qǐng)求的頁(yè)面可以使用原始頁(yè)面的表單數(shù)據(jù)和查詢字符串集合 4)被調(diào)用頁(yè)面的Page指令的Enab
8、leViewStateMac屬性設(shè)置為False,5.11 頁(yè)面跳轉(zhuǎn)方法,6. Javascript實(shí)現(xiàn)跳轉(zhuǎn) / 以下方式直接跳轉(zhuǎn) window.location.href = hello.html; / 以下方式定時(shí)跳轉(zhuǎn) setTimeout(javascript:location.href=hello.html, 5000); ,5.11 頁(yè)面跳轉(zhuǎn)方法,7. 新頁(yè)面顯示 1)Respose.Write( window.open( + url + ); ); 2) 打開 3) 打開 private void button1_Click(object sender, EventArgs e)
9、FrmRemoteVM fa = new FrmRemoteVM(); fa.Show(); ,5.11 頁(yè)面跳轉(zhuǎn)方法,當(dāng)需要把用戶跳轉(zhuǎn)到另一臺(tái)服務(wù)器上的頁(yè)面的時(shí)候使用redirect 當(dāng)需要把用戶跳轉(zhuǎn)到非aspx頁(yè)面時(shí)候,如html使用redirect 需要把查詢字符串作為url一部分的時(shí)候保留傳給服務(wù)器的時(shí)候,因?yàn)槠渌?種方法不能做到2次postback,把數(shù)據(jù)先帶回服務(wù)器使用redirect 需要aspx頁(yè)面間的轉(zhuǎn)換(不涉及登錄) 使用transfer 當(dāng)需要把a(bǔ)spx頁(yè)面的輸出結(jié)果插入到另一個(gè)aspx頁(yè)面的時(shí)候使用execute方法。 如果要讓用戶來(lái)決定何時(shí)轉(zhuǎn)換頁(yè)面以及轉(zhuǎn)到哪一個(gè)頁(yè)面,
10、超級(jí)鏈接最適合。 如果要用程序來(lái)控制轉(zhuǎn)換的目標(biāo),但轉(zhuǎn)換的時(shí)機(jī)由用戶決定,使用Web服務(wù)器的HyperLink控件,動(dòng)態(tài)設(shè)置其NavigateUrl屬性。 如果要把用戶連接到另一臺(tái)服務(wù)器上的資源,使用Response.Redirect。 如果要將查詢字符串作為URL的一部分保留,使用Response.Redirect。 如果要將執(zhí)行流程轉(zhuǎn)入同一Web服務(wù)器的另一個(gè)ASPX頁(yè)面,應(yīng)當(dāng)使用Server.Transfer而不是Response.Redirect,因?yàn)镾erver.Transfer能夠避免不必要的網(wǎng)絡(luò)通信,從而獲得更好的性能和瀏覽效果。 如果要捕獲一個(gè)ASPX頁(yè)面的輸出結(jié)果,然后將結(jié)果插
11、入另一個(gè)ASPX頁(yè)面的特定位置,則使用Server.Execute。 如果要確保HTML輸出合法,請(qǐng)使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。,頁(yè)面跳轉(zhuǎn)小結(jié),因?yàn)锳SP.NET的頁(yè)面表單提交到自身,完成回傳的功能,所以默認(rèn)情況下不能使用POST方式進(jìn)行多頁(yè)面?zhèn)髦?1URL傳值這是經(jīng)典的傳值方式,這種方法的使用非常簡(jiǎn)單,不過(guò)所傳遞的值是會(huì)顯示在瀏覽器的地址欄上的,而且不能傳遞對(duì)象。所以這種方法一般用于傳遞的值少且安全性要求不高的情況下。在*.aspx頁(yè)面開發(fā)中可以使用超級(jí)鏈接文本進(jìn)行傳值,如以下代碼所示。URL傳值以上鏈接文
12、本將頁(yè)面跳轉(zhuǎn)到GetValues.aspx頁(yè)面,并且通過(guò)URL傳遞urlvalue1變量和urlvalue2變量,其值分別為intel和amd。在*.cs的服務(wù)器端方法中也可以調(diào)用HttpResponse對(duì)象的Redirect方法,將瀏覽器端重定向到新頁(yè)面并通過(guò)URL傳值,如以下代碼所示。Response.Redirect(“/GetValues.aspx?urlvalue1=intel,5.12 頁(yè)面之間數(shù)據(jù)傳遞,2. Session傳值 這種方法將每份數(shù)據(jù)存儲(chǔ)于服務(wù)器變量中,可以傳遞比較多的數(shù)據(jù),并且安全性較高,所以常用于用戶身份的驗(yàn)證功能中。不過(guò),Session變量如果存儲(chǔ)過(guò)多的數(shù)據(jù)會(huì)消
13、耗過(guò)多的服務(wù)器資源。其使用方法如以下代碼所示。SessionSessionValue = “ATI”;/也可以用索引存儲(chǔ)Session0 = “ATI”;/在其他頁(yè)面的服務(wù)器端方法中取值方式為:string str = SessionSessionValue.ToString();/也可以用索引獲取string str = Session0.ToString();Session的可在應(yīng)用程序的多個(gè)頁(yè)面中以名稱/值對(duì)的方式共享,直到瀏覽用戶關(guān)閉自己的瀏覽器或者服務(wù)器Session超時(shí)(可設(shè)置,默認(rèn)為20分鐘)。,5.12 頁(yè)面之間數(shù)據(jù)傳遞,3Cookie傳值 Cookie是一種比較特殊的數(shù)據(jù)存儲(chǔ)
14、方式,它以文本文件的形式存在于瀏覽用戶的磁盤中。很多登錄系統(tǒng)就是利用Cookie實(shí)現(xiàn)用戶自動(dòng)登錄。即用戶登錄一次的登錄信息將被寫入到用戶電腦的Cookie文件中,下次登錄時(shí),網(wǎng)站自動(dòng)讀取該Cookie完成身份驗(yàn)證。通過(guò)Cookie傳遞數(shù)據(jù)雖然很方便,保存時(shí)間可以自由設(shè)置,但是安全性不高。ASP.NET中操作Cookie的主要類型位于System.Web命名空間下,分別為HttpCookie、HttpResponse以及HttpRequest。HttpCookie可建立和操作獨(dú)立Cookie的安全類型,訪問(wèn)HttpResponse和HttpRequest的Cookies屬性可以獲取HttpCoo
15、kieCollection集合對(duì)象,以讀取或添加HttpCookie對(duì)象。添加Cookie的方法如以下代碼所示。,5.12 頁(yè)面之間數(shù)據(jù)傳遞,/創(chuàng)建一個(gè)HttpCookie 對(duì)象,向構(gòu)造函數(shù)傳遞名稱值HttpCookie ck = new HttpCookie(CookieValue);/設(shè)置ck的“Value”屬性(值)ck.Value = “Cookie值”;/設(shè)置ck的過(guò)期時(shí)間為當(dāng)前時(shí)間加上360s,即6分鐘后失效ck.Expires = DateTime.Now.AddSeconds(360);/設(shè)置ck有效范圍(域限制)ck.Domain = ;/將ck添加至HttpCookieCo
16、llection對(duì)象Response.Cookies.Add(ck);/也可為以下方法添加/Response.AppendCookie(ck);,5.12 頁(yè)面之間數(shù)據(jù)傳遞,讀取用戶的Cookie則更為簡(jiǎn)單,只需根據(jù)名稱讀取HttpCookieCollection集合對(duì)象中的子項(xiàng)即可,如以下代碼所示。string str = Request.CookiesCookieValue.Value;除此之外,還可以利用一個(gè)HttpCookie存儲(chǔ)多個(gè)名稱/值對(duì)形式的Cookie信息,如以下代碼所示。HttpCookie ck = new HttpCookie(CookieValue);/以名稱/值對(duì)的
17、方式添加多個(gè)Cookie信息ck.Values.Add(value1, “one”);ck.Values.Add(value2, two); 讀取這些Cookie如以下代碼所示。string str = 值1:+Request.CookiesCookieValue.Valuesvalue1;str += 值2: + Request.CookiesCookieValue.Valuesvalue2;,5.12 頁(yè)面之間數(shù)據(jù)傳遞,說(shuō)明:多數(shù)瀏覽器支持最多可達(dá)4096字節(jié)的Cookie,如果要將為數(shù)不多的幾個(gè)值保存到用戶計(jì)算機(jī)上,瀏覽器還限制了每個(gè)站點(diǎn)可以在用戶計(jì)算機(jī)上保存的Cookie數(shù)量。大多數(shù)瀏
18、覽器只允許每個(gè)站點(diǎn)保存20個(gè)Cookie。如果試圖保存更多的Cookie,則最先保存的Cookie就會(huì)被刪除。還有些瀏覽器會(huì)對(duì)來(lái)自所有站點(diǎn)的Cookie總數(shù)作出限制,這個(gè)限制通常為300個(gè)。用戶可以設(shè)置自己的瀏覽器,拒絕接受Cookie,這種情況下只能結(jié)合其他的數(shù)據(jù)存儲(chǔ)方式。,5.12 頁(yè)面之間數(shù)據(jù)傳遞,4Server.Transfer傳值 首先通過(guò)定義一個(gè)public權(quán)限的屬性,該屬性可返回所需傳遞的值。 然后在第兩個(gè)頁(yè)面中,使用Context.Handler屬性來(lái)獲得前一個(gè)頁(yè)面實(shí)例對(duì)象的引用,即可通過(guò)訪問(wèn)自定義的屬性獲取需要的值。,5.12 頁(yè)面之間數(shù)據(jù)傳遞,假設(shè)SendValues.as
19、px頁(yè)面為傳遞數(shù)據(jù)的頁(yè)面,在SendValues.aspx.cs的頁(yè)面類中定義一個(gè)public屬性,通過(guò)get直接返回需要傳遞的值(可為頁(yè)面中某個(gè)服務(wù)器控件的屬性值)。public string TransferDatagetreturn VIA;,5.12 頁(yè)面之間數(shù)據(jù)傳遞,在SendValues.aspx.cs的某個(gè)方法(如Button控件的Click事件處理方法)中調(diào)用HttpServerUtility對(duì)象的Transfer方法,如以下代碼所示。Server.Transfer(/GetValues.aspx);假設(shè)GetValues.aspx為第二個(gè)頁(yè)面,在GetValues.aspx.
20、cs的Page_Load方法中接收前一個(gè)頁(yè)面所傳遞的值,方法如以下代碼所示。/定義SendValues類型的變量SV_PageSendValues SV_Page;/訪問(wèn)HttpContext對(duì)象的Handler屬性,將值轉(zhuǎn)換為SendValues類型,引用賦值給SV_PageSV_Page = (SendValues)Context.Handler;/SV_Page即為SendValues.aspx頁(yè)面類的對(duì)象,直接獲取其TransferData屬性值string str = SV_Page.TransferData;,5.12 頁(yè)面之間數(shù)據(jù)傳遞,5、Application傳值 用于保存所有用戶共用的數(shù)據(jù)信息。 在Asp.Net中類似的配置數(shù)據(jù)最好保存在Web.config文件中。如果使用App
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 膽囊的課件教學(xué)課件
- 醫(yī)療數(shù)據(jù)安全事件應(yīng)急處置中的患者權(quán)益保障機(jī)制
- 醫(yī)療數(shù)據(jù)安全與醫(yī)療物聯(lián)網(wǎng)設(shè)備數(shù)據(jù)安全防護(hù)策略
- 醫(yī)療數(shù)據(jù)孤島破解:區(qū)塊鏈協(xié)同治理模式
- 山西省2026屆數(shù)學(xué)高三第一學(xué)期期末質(zhì)量檢測(cè)模擬試題含解析
- 9-專題十二 世界多極化與經(jīng)濟(jì)全球化 十年真題
- 醫(yī)療數(shù)據(jù)區(qū)塊鏈安全防護(hù)的關(guān)鍵問(wèn)題
- 25:2024屆江蘇省蘇北七市(南通三模) 學(xué)生版答案
- 山東省東營(yíng)市實(shí)驗(yàn)中學(xué)2026屆高一生物第一學(xué)期期末監(jiān)測(cè)試題含解析
- 醫(yī)療數(shù)據(jù)共享的區(qū)塊鏈安全責(zé)任保險(xiǎn)機(jī)制
- 球團(tuán)化驗(yàn)知識(shí)培訓(xùn)課件
- PADI初級(jí)開放水域潛水員OW理論模擬考試A卷
- 2025年及未來(lái)5年中國(guó)硬碳負(fù)極材料行業(yè)市場(chǎng)全景監(jiān)測(cè)及投資策略研究報(bào)告
- 江蘇省南京市秦淮區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末考試英語(yǔ)試題(含答案解析)
- GB/T 4995-2025平托盤性能要求和試驗(yàn)選擇
- 2025年婦女發(fā)展基金面試模擬題集
- 2025學(xué)年人教版小學(xué)三年級(jí)數(shù)學(xué)上冊(cè)期末試卷(含答案解析)
- GB/T 27612.2-2025農(nóng)業(yè)灌溉設(shè)備噴頭第2部分:結(jié)構(gòu)和運(yùn)行要求
- 維修人員薪酬管理制度
- 鼻出血教學(xué)課件
- 人教版初中英語(yǔ)單詞大全
評(píng)論
0/150
提交評(píng)論