




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章ASP.NET內(nèi)置對(duì)象
25.1HTTP響應(yīng)ASP.NET通過Page類的屬性Response(即HttpResponse對(duì)象)可以很好地控制輸出的內(nèi)容和方式,如頁面重定向、保存Cookie等。3HttpResponse對(duì)象的常用屬性和方法表Buffer屬性邏輯值,true表示先輸出到緩沖區(qū),在處理完整個(gè)響應(yīng)后再將數(shù)據(jù)輸出到客戶端瀏覽器;false表示直接將信息輸出到客戶端瀏覽器。Clear()當(dāng)屬性Buffer值為true時(shí),Response.Clear()表示清除緩沖區(qū)中數(shù)據(jù)信息。End()終止ASP.NET應(yīng)用程序的執(zhí)行。Flush()立刻輸出緩沖區(qū)中的網(wǎng)頁。Redirect()頁面重定向,可通過URL附加查詢字符串在不同網(wǎng)頁之間傳遞數(shù)據(jù)。Write()在頁面上輸出信息。AppendToLog()將自定義日志信息添加到IIS日志文件中。4實(shí)例5-1Write()方法應(yīng)用利用Write()方法除可以輸出提示信息、變量值外,也可以輸出XHTML文本或JavaScript腳本等。源程序:Write.aspx55.2HTTP請(qǐng)求ASP.NET通過Page類的屬性Request能很好地控制請(qǐng)求數(shù)據(jù),如訪問客戶端的瀏覽器信息、查詢字符串、Cookie等信息。Page類的屬性Request是一個(gè)HttpRequest對(duì)象,它封裝了HTTP請(qǐng)求信息。6HttpRequest對(duì)象的數(shù)據(jù)集合對(duì)應(yīng)表數(shù)據(jù)集合說明QueryString從查詢字符串中讀取用戶提交的數(shù)據(jù)。Cookies獲得客戶端的Cookies數(shù)據(jù)。ServerVariables獲得服務(wù)器端或客戶端環(huán)境變量信息。ClientCertificate獲得客戶端的身份驗(yàn)證信息。Browser獲得客戶端瀏覽器信息。獲取HttpRequest對(duì)象的Browser數(shù)據(jù)集合的語法格式:Request.Browser。7QueryString數(shù)據(jù)集合使用QueryString獲得的查詢字符串是指跟在URL后面的變量及值,以“?”與URL間隔,不同的變量之間以“&”間隔。8本實(shí)例主要是使用Response對(duì)象的Redirect方法實(shí)現(xiàn)頁面跳轉(zhuǎn)并傳遞參數(shù)。然后運(yùn)用QueryString獲取傳遞的參數(shù)。程序開發(fā)步驟如下:(1)在Chap5網(wǎng)站中新建網(wǎng)頁5-2Querystring.aspx和welcome.aspx,,在5-2Querystring.aspx頁面上添加一個(gè)TextBox控件、一個(gè)Button控件和兩個(gè)RadioButton控件。(2)單擊Default.aspx頁面中的“確定”按鈕,觸發(fā)其Click事件,該事件中,實(shí)現(xiàn)跳轉(zhuǎn)到welcome.aspx頁面并傳遞參數(shù)Name和Sex的功能。代碼如下:實(shí)例5-2Querystring進(jìn)行跨頁面提交數(shù)據(jù)
9protectedvoidBtnOk_Click(objectsender,EventArgse){stringname=txtName.Text;stringsex="先生";if(rbtnsex2.Checked)sex="女士";Response.Redirect("~/welcome.aspx?Name="+name+"&Sex="+sex);}10protectedvoidPage_Load(objectsender,EventArgse){stringname=Request.QueryString["Name"];stringsex=Request.QueryString["Sex"];Response.Write("歡迎"+name+sex+"學(xué)習(xí)ASP.NET編程!");}11ServerVariables數(shù)據(jù)集合可很方便地取得服務(wù)器端或客戶端的環(huán)境變量信息,如客戶端的IP地址等。語法格式如下: Request.ServerVariables["環(huán)境變量名"]12常用的環(huán)境變量表環(huán)境變量名說明CONTENT_LENGTH發(fā)送到客戶端的文件長度。CONTENT_TYPE發(fā)送到客戶端的文件類型。LOCAL_ADDR服務(wù)器端的IP地址。REMOTE_ADDR客戶端IP地址。REMOTE_HOST客戶端計(jì)算機(jī)名。SERVER_NAME服務(wù)器端計(jì)算機(jī)名。SERVER_PORT服務(wù)器端網(wǎng)站的端口號(hào)。13Browser數(shù)據(jù)集合用于判斷用戶的瀏覽器類型、版本等,以便根據(jù)不同的瀏覽器編寫不同的網(wǎng)頁。語法格式為: Request.Browser["瀏覽器特性名"]。14瀏覽器特性名對(duì)應(yīng)表名稱說明Browser瀏覽器類型。Version瀏覽器版本號(hào)。MajorVersion瀏覽器主版本號(hào)。MinorVersion瀏覽器次版本號(hào)。Frames邏輯值,true表示支持框架功能。Cookies邏輯值,true表示支持Cookie。。JavaScript邏輯值,true表示支持JavaScript。ActiveXControls邏輯值,true表示支持ActiveXControl控件。15實(shí)例6-2ServerVariables和Browser應(yīng)用界面顯示信息為ServerVariables和Brower數(shù)據(jù)集合中相應(yīng)值。源程序:Request.aspx16protectedvoidPage_Load(objectsender,EventArgse){lblMsg.Text="服務(wù)器IP地址:"+Request.ServerVariables["Local_ADDR"]+"<br/>";lblMsg.Text+="客戶端IP地址:"+Request.ServerVariables["Remote_ADDR"]+"<br/>";lblMsg.Text+="瀏覽器類型:"+Request.Browser["Browser"]+"<br/>";lblMsg.Text+="瀏覽器版本:"+Request.Browser["Version"]+"<br/>";lblMsg.Text+="是否支持Cookies:"+Request.Browser["Cookies"];}17
HttpServerUtilityPage類的屬性Server(即HttpServerUtility對(duì)象)封裝了服務(wù)器端的一些操作,如轉(zhuǎn)換XHTML元素標(biāo)志、獲取網(wǎng)頁的物理路徑等。18HttpServerUtility對(duì)象的常用屬性和方法表ScriptTimeout屬性設(shè)置腳本文件執(zhí)行的最長時(shí)間,如:Server.ScriptTimeout=60;//設(shè)置最長時(shí)間為60秒Execute()停止執(zhí)行當(dāng)前網(wǎng)頁,轉(zhuǎn)到新的網(wǎng)頁執(zhí)行,執(zhí)行完畢后返回到原網(wǎng)頁,繼續(xù)執(zhí)行后續(xù)語句。HtmlEncode()將字符串中的XHTML元素標(biāo)記轉(zhuǎn)換為字符實(shí)體,如將“<”轉(zhuǎn)換為<。HtmlDecode()與HtmlEncode作用相反。MapPath()獲取網(wǎng)頁的物理路徑。Transfer()停止執(zhí)行當(dāng)前網(wǎng)頁,轉(zhuǎn)到新的網(wǎng)頁執(zhí)行,執(zhí)行完畢后不再返回原網(wǎng)頁。UrlEncode()將字符串中某些特殊字符轉(zhuǎn)換為URL編碼,如將“/”轉(zhuǎn)換為“%2f”,空格轉(zhuǎn)換為“+”等。UrlDecode()與UrlEncode作用相反。196.5狀態(tài)管理客戶端狀態(tài)是將信息保留在客戶端計(jì)算機(jī)上,當(dāng)客戶端向服務(wù)器端發(fā)送請(qǐng)求時(shí),狀態(tài)信息會(huì)隨之發(fā)送到服務(wù)器端。具體實(shí)現(xiàn)時(shí)可選擇ViewState、ControlState、HiddenField、Cookie和前面提及的查詢字符串,其中ControlState只能用于自定義控件的狀態(tài)管理。服務(wù)器狀態(tài)是指狀態(tài)的信息保存于服務(wù)器。具體實(shí)現(xiàn)時(shí)可選擇Session狀態(tài)、Application狀態(tài)或數(shù)據(jù)庫支持。20比較客戶端狀態(tài)和服務(wù)器端狀態(tài)客戶端狀態(tài)由于狀態(tài)數(shù)據(jù)保存在客戶端,所以不消耗服務(wù)器內(nèi)存資源,但容易泄露數(shù)據(jù)信息,安全性較差。服務(wù)器端狀態(tài)將消耗服務(wù)器端內(nèi)存資源,但具有較高的安全性。216.5.1ViewState又稱為視圖狀態(tài),用于維護(hù)自身Web窗體的狀態(tài)。當(dāng)用戶請(qǐng)求ASP.NET網(wǎng)頁時(shí),ASP.NET將ViewState封裝為一個(gè)或幾個(gè)隱藏的表單域傳遞到客戶端。當(dāng)用戶再次提交網(wǎng)頁時(shí),ViewState也將被提交到服務(wù)器端。這樣后續(xù)的請(qǐng)求就可以獲得上一次請(qǐng)求時(shí)的狀態(tài)。選擇“查看”→“源文件”可查看ViewState。22
Cookie保存到客戶端硬盤或內(nèi)存中的一小段文本信息,如站點(diǎn)、客戶、會(huì)話等有關(guān)的信息。與網(wǎng)站關(guān)聯(lián),而不是與特定的網(wǎng)頁關(guān)聯(lián)。用戶訪問不同站點(diǎn)時(shí),各個(gè)站點(diǎn)都可能會(huì)向用戶的瀏覽器發(fā)送一個(gè)Cookie,瀏覽器會(huì)分別存儲(chǔ)所有的Cookie??梢栽诳蛻舳诵薷腃ookie設(shè)置和禁用Cookie。23
Cookie(續(xù))當(dāng)用戶的瀏覽器關(guān)閉對(duì)Cookie的支持,而不能有效地識(shí)別用戶時(shí),只需在web.config中加入以下語句:<sessionStatecookieless="AutoDetect"><sessionStatecookieless="UseUri">Cookie文本文件存儲(chǔ)于“盤符:\DocumentsandSettings\<用戶名>\Cookies”文件夾。ASP.NET提供System.Web.HttpCookie類來處理Cookie,常用的屬性是Value和Expires。24
Cookie(續(xù))每個(gè)Cookie一般都會(huì)有一個(gè)有效期限,當(dāng)用戶訪問網(wǎng)站時(shí),瀏覽器會(huì)自動(dòng)刪除過期的Cookie。沒有設(shè)置有效期的Cookie將不會(huì)保存到硬盤文件中,而是作為用戶會(huì)話信息的一部分。當(dāng)用戶關(guān)閉瀏覽器時(shí),Cookie就會(huì)被丟棄。這種類型的Cookie很適合用來保存只需短時(shí)間存儲(chǔ)的信息,或者保存由于安全原因不應(yīng)寫入客戶端硬盤文件的信息。25
Cookie(續(xù))使用Response.Cookies數(shù)據(jù)集合建立Cookie。 Response.Cookies["Name"].Value=“張三”;也可以先創(chuàng)建HttpCookie對(duì)象,設(shè)置其屬性,然后通過Response.Cookies.Add()方法添加。HttpCookiecookie=newHttpCookie("Name"); cookie.Value="張三"; cookie.Expires=DateTime.Now.AddDays(1); Response.Cookies.Add(cookie);使用Request.Cookies數(shù)據(jù)集合獲取Cookie值。 stringname=Request.Cookies.["Name"].Value;
26
Cookie應(yīng)用本實(shí)例主要實(shí)現(xiàn)利用Cookie確認(rèn)用戶是否已登錄,其中Cookie.aspx頁面只有在用戶登錄后才能顯示。源程序:Cookie.aspx源程序:CookieLogin.aspx程序說明:測試時(shí)先瀏覽Cookie.aspx,此時(shí)因無用戶名Cookie信息,頁面重定向到CookieLogin.aspx,輸入用戶名單擊確定將用戶名信息存入Cookie。關(guān)閉瀏覽器。再次瀏覽Cookie.aspx可看到歡迎信息。27
Session又稱會(huì)話狀態(tài),典型的應(yīng)用有儲(chǔ)存用戶信息、多網(wǎng)頁間信息傳遞、購物車等。Session產(chǎn)生在服務(wù)器端,只能為當(dāng)前訪問的用戶服務(wù)。以用戶對(duì)網(wǎng)站的最后一次訪問開始計(jì)時(shí),當(dāng)計(jì)時(shí)達(dá)到會(huì)話設(shè)定時(shí)間并且期間沒有訪問操作時(shí),則會(huì)話自動(dòng)結(jié)束。如果同一個(gè)用戶在瀏覽期間關(guān)閉瀏覽器后再訪問同一個(gè)網(wǎng)頁,服務(wù)器會(huì)為該用戶產(chǎn)生新的Session。28
Session(續(xù))ASP.NET用一個(gè)唯一的120位SessionID來標(biāo)識(shí)每一個(gè)會(huì)話。若客戶端支持Cookie,ASP.NET會(huì)將SessionID保存到相應(yīng)的Cookie中;若不支持,就將SessionID添加到URL中。注意:不管SessionID保存在Cookie還是添加在URL中,都是明文。如果需要保護(hù)SessionID,可考慮采用SSL通信。Session由System.Web.HttpSessionState類實(shí)現(xiàn),使用時(shí),常直接通過Page類的Session屬性訪問HttpSessionState類的實(shí)例。29
HttpSessionState常用的屬性、方法和事件表
Contents屬性獲取對(duì)當(dāng)前會(huì)話狀態(tài)對(duì)象的引用。IsCookieless屬性邏輯值,確定SessionID嵌入在URL中還是存儲(chǔ)在Cookie中。true表示存儲(chǔ)在Cookie中。IsNewSession屬性邏輯值,true表示是與當(dāng)前請(qǐng)求一起創(chuàng)建的。Mode屬性獲取當(dāng)前會(huì)話狀態(tài)的模式。SessionID屬性獲取會(huì)話的唯一標(biāo)識(shí)ID。Timeout屬性獲取或設(shè)置會(huì)話狀態(tài)持續(xù)時(shí)間,單位為分鐘,默認(rèn)為20分鐘。Abandon方法取消當(dāng)前會(huì)話。Remove方法刪除會(huì)話狀態(tài)集合中的項(xiàng)。Session_Start事件用戶請(qǐng)求網(wǎng)頁時(shí)觸發(fā),相應(yīng)的事件代碼包含于Global.asax文件中。Session_End事件用戶會(huì)話結(jié)束時(shí)觸發(fā),相應(yīng)的事件代碼包含于Global.asax文件中。30Session
(續(xù))只有在web.config文件中的sessionstate模式設(shè)置為InProc時(shí),才會(huì)引發(fā)Session_End事件。如果會(huì)話模式設(shè)置為StateServer或SQLServer,則不會(huì)引發(fā)該事件。對(duì)Session狀態(tài)的賦值: Session["Name"]="張三"; Session.Contents["Name"]="張三";注意:Session使用的名稱不區(qū)分大小寫,因此不要用大小寫區(qū)分不同變量。31Session狀態(tài)的存儲(chǔ)方式可以在web.config中通過<SessionState>元素的mode屬性來指定,共有Off、InProc、StateServer、SQLServer和Custom五個(gè)枚舉值供選擇,分別代表禁用、進(jìn)程內(nèi)、獨(dú)立的狀態(tài)服務(wù)、SQLServer和自定義數(shù)據(jù)存儲(chǔ)。在實(shí)際工程項(xiàng)目中,一般選擇StateServer,而對(duì)于大型網(wǎng)站常選用SQLServer。32某考試系統(tǒng)的Session狀態(tài)設(shè)置<configuration><system.web><sessionStatemode="StateServer"stateConnectionString="tcpip=StateServerName:42424"cookieless="false"timeout="90"></sessionState></system.web></configuration>33
Session應(yīng)用本實(shí)例能保護(hù)某些網(wǎng)頁,如要進(jìn)入Session.aspx頁面,則首先要通過登錄認(rèn)證。源程序:Session.aspx程序說明:當(dāng)用戶直接訪問Session.aspx時(shí),會(huì)判斷Session["Name"]狀態(tài)值,若為空則重定向到SessionLogin.aspx,否則顯示歡迎信息。在SessionLogin.aspx中用戶登錄成功后,將建立Session["Name"]狀態(tài)值。此時(shí)要測試是否存在Session["Name"]狀態(tài)值,應(yīng)在打開SessionLogin.aspx頁面的瀏覽器中直接更改地址來訪問Session.aspx。34
Application又稱應(yīng)用程序狀態(tài),與應(yīng)用于單個(gè)用戶的Session狀態(tài)不同,它應(yīng)用于所有的用戶。在網(wǎng)站運(yùn)行時(shí)存在,網(wǎng)站關(guān)閉時(shí)將被釋放。因此,如果需要將狀態(tài)數(shù)據(jù)保存下來,則適宜保存在數(shù)據(jù)庫中。由System.Web.HttpApplicationS
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 液溫考試試題及答案
- 莆田哲理考試題及答案
- 機(jī)車制動(dòng)試題及答案
- 校園安全知識(shí)培訓(xùn)課件圖片
- 神經(jīng)阻滯考試題及答案
- 安永稅務(wù)面試題及答案
- 高一語文期末考試題及答案
- 押運(yùn)員實(shí)體考試試題及答案
- 票據(jù)試題及答案答案
- 工程造價(jià)面試題及答案
- 2025年事業(yè)單位招聘考試建筑類綜合能力測試試卷八十二:建筑工程施工監(jiān)理案例分析八
- 2025年事業(yè)單位招聘考試綜合類專業(yè)能力測試試卷(工程類)-建筑工程施工質(zhì)量控制
- 2025年教育法學(xué)法規(guī)試題及答案
- 漢教課堂觀察匯報(bào)
- 2025年四川省高考化學(xué)試卷真題(含答案解析)
- 2025年注冊(cè)會(huì)計(jì)師考試財(cái)務(wù)成本管理試題及答案解析
- 《人工智能通識(shí)課基礎(chǔ)》高職人工智能全套教學(xué)課件
- 供應(yīng)鏈管理師三級(jí)實(shí)操考試題庫及答案
- 鰓裂囊腫及瘺管的護(hù)理
- 推進(jìn)普惠托育服務(wù)體系建設(shè)實(shí)施方案
- 校園保安崗位職責(zé)培訓(xùn)
評(píng)論
0/150
提交評(píng)論