祁長興《ASP.NETweb程序設計教程》PPT第八章_第1頁
祁長興《ASP.NETweb程序設計教程》PPT第八章_第2頁
祁長興《ASP.NETweb程序設計教程》PPT第八章_第3頁
祁長興《ASP.NETweb程序設計教程》PPT第八章_第4頁
祁長興《ASP.NETweb程序設計教程》PPT第八章_第5頁
已閱讀5頁,還剩138頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

ASP.NETWeb程序設計8ASP.NET對象應用第章本章內容8.1Response對象

8.2Request對象

8.3Server對象

8.4page對象8.5程序狀態(tài)對象8.6案例:一個簡單的在線聊天室

8.1Response對象

在ASP.NET中,Response對象的類型是。Response對象用于響應客戶端的請求,將信息發(fā)送到客戶端瀏覽器。

8.1.1屬性和方法8.1.2輸出信息8.1.3頁面跳轉8.1.4創(chuàng)立Cookie8.1.1屬性和方法

表8-1

Response對象的屬性

屬性名說明Buffer獲取或設置HTTP輸出是否要作緩沖處理,緩沖則為true,否則為false。默認為trueCache獲取Web頁的緩存策略(過期時間、保密性、變化子句)Cookies將Cookie信息寫入客戶端瀏覽器Charset以字符串的形式獲取或設置輸出流的HTTP字符集ContentType獲取或設置輸出流的HTTPMIME類型,默認為text/htmlContentEncoding獲取或設置輸出流的HTTP字符8.1.1屬性和方法

續(xù)表8-1

Response對象的屬性

屬性名說明IsClientConnected獲取一個布爾類型的值,指示客戶端是否仍連接在服務器上Expires獲取或設置在瀏覽器上緩存的頁過期之前的分鐘數(shù)ExpiresAbsolute獲取或設置從緩存中移除緩存信息的絕對日期和時間Output獲取輸出HTTP響應的文本輸出OutputStream獲取HTTP內容主體的二進制數(shù)據(jù)輸出流8.1.1屬性和方法

表8-2

Response對象的方法

方法名說明Write(string)將指定的字符串或表達式的結果寫到當前的HTTP輸出內容流WriteFile(filename)將filename指定的文件寫入當前的HTTP輸出內容流End()將當前所有的緩沖的輸出流發(fā)送到客戶端,并停止當前頁的執(zhí)行Close()關閉客戶端的聯(lián)機Flush()將緩存中的內容立即顯示出來ClearContent()清除緩沖區(qū)流中的所有內容輸出Redirect(URL)將客戶端瀏覽器重定向到指定的URL8.1.2輸出信息

使用Response.Write方法可以將信息寫入HTTP輸出內容流。Write方法的語法格式為:

1.使用Write方法

Response.Write(string);

使用Response.Write方法并不是將數(shù)據(jù)直接顯示在網頁上,而是輸出到HTML代碼中。其中string可以字符串常量,亦可以是字符串變量。

8.1.2輸出信息

1.使用Write方法

例8-1Response.Write()使用例如protectedvoidPage_Load(objectsender,EventArgse){Response.Write("<fontsize=6color=oliveface=楷體_GB2312>歡送來到我的主頁</font><br><br>");Response.Write("<hrwidth=75%color=redalign=left><br><br>");Response.Write("現(xiàn)在的時間是:"+()+"<br><br>");8.1.2輸出信息

Response.Write("瀏覽更多新聞,可以到<ahref='://'>新浪</a><br><br>");Response.Write("測試輸出雙引號\"");Response.Write("<scriptlanguage=javascript>alert('你真棒!');</script>");}8.1.2輸出信息

1.使用Write方法

例8-1運行效果8.1.2輸出信息

使用Response對象的WriteFile方法可以將指定的文件內容寫入到HTML輸出流。語法格式為:2.使用WriteFile方法

Response.WriteFile(filename)filename包含文件的路徑和名稱。WriteFile方法常被用于提供文件下載的應用中。

使用Response對象的WriteFile方法可以將指定的文件內容寫入到HTML輸出流。語法格式為:2.使用WriteFile方法

8.1.2輸出信息

1.使用Write方法

例8-2使用WriteFile方法實現(xiàn)用戶下載成績表的功能1〕新建一個ASP.NET網站,將execel文件“電子商務原理成績〞保存到站點的根目錄下;2〕將default頁面切換到設計視圖,添加一個linkbutton控件,設置其“text〞屬性為“下載電子商務原理成績〞;3〕雙擊linkbutton控件,default頁面切換到頁面;protectedvoidLinkButton1_Click(objectsender,EventArgse){Response.ContentType="application/vnd.ms-excel";Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312");Response.WriteFile(Page.MapPath("電子商務原理成績.xls"));}8.1.2輸出信息

1.使用Write方法

例8-2單擊“運行〞按鈕,運行效果8.1.2輸出信息

Response對象的End方法用來輸出當前緩沖區(qū)的內容,并終止當前頁面的處理。例如

:3.使用End方法

protectedvoidPage_Load(objectsender,EventArgse){this.Title="Response.End方法例如";Response.Write("歡送光臨");Response.End();Response.Write("我的網站");}8.1.2輸出信息

1.使用Write方法

演示運行效果8.1.3頁面跳轉

使用Response對象的Redirect方法可以實現(xiàn)頁面的跳轉,即在瀏覽器中顯示新網頁的內容。其語法格式為:

Response.Redirect(URL);

其中,參數(shù)URL希望跳轉的新網頁的地址。例如,

");

//將用戶引到沈陽師范大學的首頁

8.1.3頁面跳轉

1.使用Write方法

例8-3假設month1.htm,month2.htm,…,month12.htm,分別存放1—12月的月歷,當用戶訪問網站時,自動將用戶引到當前月份的月歷頁面protectedvoidPage_Load(objectsender,EventArgse){DateTimetime=DateTime.Now;stringurl="month"+()+".htm";Response.Redirect(url);}8.1.3頁面跳轉

1.使用Write方法

例8-4頁面跳轉例如在網站中有兩個頁面分別是“l(fā)ogin.aspx〞和“welcome.aspx〞。用戶在“l(fā)ogin.aspx〞頁面輸入登錄信息,單擊“登錄〞按鈕,跳轉到“welcome.aspx〞頁面,如果用戶登錄成功,那么在“welcome.aspx〞頁面顯示用戶的登錄信息,否那么提示用戶輸入信息不完整。8.1.3頁面跳轉

1.使用Write方法

例8-4頁面跳轉例如——具體步驟protectedvoidbuttonOk_Click(objectsender,EventArgse){stringusername=TextBox1.Text;stringpassword=TextBox2.Text;stringlike=DropDownList1.SelectedItem.Text;Response.Redirect("welcome.aspx?Username="+username+"&Password="+password+"&Like="+like);}8.1.3頁面跳轉

1.使用Write方法

例8-4

登錄頁面運行效果8.1.4創(chuàng)立Cookie使用Response.Cookies數(shù)據(jù)集合可以在客戶端創(chuàng)立一個Cookie,一個Cookie對象包含三個參數(shù),分別是:名稱、值和有效期。創(chuàng)立Cookie的語法格式為:Response.Cookies[名稱].Value=值;Response.Cookies[名稱].Expires=有效期;

Response.Cookies["username"].Value="yinweijing";Response.Cookies["username"].Expires=DateTime.Now.AddDays(14);8.2Request對象

在ASP.NET中,Request對象的類型是。當用戶發(fā)出一個翻開Web頁面的請求時,Web效勞器會通過Request對象來獲取被封裝的HTTP請求信息。8.2.1屬性和方法8.2.2讀取客戶端瀏覽器信息8.2.3讀取表單傳遞的數(shù)據(jù)8.2.4讀取查詢字符串信息8.2.5讀取Cookie數(shù)據(jù)8.2.6讀取效勞器端的環(huán)境變量8.2.1屬性和方法

表8-3

Requeste對象的屬性

屬性名說明ApplicationPath獲取被請求的頁面位于Web應用程序的哪一個文件夾中Browser獲取或設置有關正在請求的客戶端的瀏覽器功能的信息ContentLength指定客戶端發(fā)送的內容長度Cookies獲取客戶端發(fā)送的Cookie的集合FilePath獲取當前請求的虛擬路徑Form獲取表單變量集合Headers獲取HTTP頭集合8.2.1屬性和方法

續(xù)表8-3

Requeste對象的屬性

屬性名說明HttpMethod獲取客戶端使用的HTTP數(shù)據(jù)傳輸方法PhysicalPath獲取目前請求的網頁在服務器端的系統(tǒng)路徑QueryString獲取HTTP查詢字符串變量集合SeverVariables獲取Web服務器變量集合Url獲取有關目前請求的URL的信息UserLanguages獲取客戶端瀏覽器配置的語言種類UserHostAddress獲取客戶端機器的主機IP地址UserHostName獲取客戶端機器的主機名稱8.2.1屬性和方法

表8-4

Requeste對象的方法

方法名說明MapPath將當前請求的URL中的虛擬路徑映射到服務器上的物理路徑SaveAs將客戶端的HTTP請求的信息保存到磁盤中8.2.2讀取客戶端瀏覽器信息客戶端瀏覽器在發(fā)起請求時會將很多瀏覽器信息發(fā)送到效勞器。通常情況下,可以通過Request對象的Browser屬性來獲取這些信息。Browser屬性包含眾多的子屬性,分別是:ActiveControls:該值指示客戶端瀏覽器是否支持ActiveX控件;AOL:客戶端瀏覽器是否是AOL〔美國在線〕的瀏覽器;BackgroundSounds:客戶端瀏覽器是否支持背景音樂;Beta:客戶端瀏覽器是否支持測試版;Browser:客戶端瀏覽器的類型;8.2.2讀取客戶端瀏覽器信息ClvVersion:客戶端瀏覽器所安裝的.NETFramework的版本號;Cookies:客戶端瀏覽器是否支持Cookie;Crawler:判斷請求是否來自搜索引擎;Frames:客戶端瀏覽器是否支持HTML框架;JavaScript:客戶端瀏覽器是否支持JavaScript;VBScript:客戶端瀏覽器是否支持VBScript;MajorVersion:客戶端瀏覽器的主版本號〔版本號的整數(shù)局部〕;MinorVersion:客戶端瀏覽器的此版本號〔版本號的小數(shù)局部〕;Platform:客戶端使用的操作系統(tǒng)名稱;Type:客戶端瀏覽器名稱版本;Version:客戶端瀏覽器的完整版本號。8.2.2讀取客戶端瀏覽器信息1.使用Write方法

例8-5使用Request對象的Browser屬性獲取客戶端瀏覽器信息

this.Title="Request對象的Browser屬性使用例如";Response.Write("<h2>您當前使用的瀏覽器信息:</h2>");Response.Write("<hr>");Response.Write("瀏覽器的名稱及版本:"++"<br>");Response.Write("瀏覽器的類型:"++"<br>");

8.2.2讀取客戶端瀏覽器信息Response.Write("瀏覽器的版本號:"++"<br>");Response.Write("客戶端使用的操作系統(tǒng)的名稱:"++"<br>");Response.Write("是否支持測試版:"++"<br>");Response.Write("是否支持HTML框架:"++"<br>");Response.Write("是否支持JavaScript:"+()+"<br>");Response.Write("是否支持Cookies:"++"<br>");Response.Write("是否支持ActiveX控件:"++"<br>");8.2.2讀取客戶端瀏覽器信息1.使用Write方法

例8-5單擊“運行〞按鈕執(zhí)行程序,運行效果如圖8.2.3讀取表單傳遞的數(shù)據(jù)

客戶端提交數(shù)據(jù)的常用方式有兩種:表單和查詢字符串。這兩種方式提交的數(shù)據(jù)都可以使用Request對象來讀取。其語法格式為:

Request.Form[“域名稱〞]Response.Cookies["username"].Value="yinweijing";Response.Cookies["username"].Expires=DateTime.Now.AddDays(14);8.2.3讀取表單傳遞的數(shù)據(jù)1.使用Write方法

例8-6使用Request對象的Browser屬性獲取客戶端瀏覽器信息

1〕啟動VisualStudio2023,創(chuàng)立一個空網站,在站點根目錄下新建兩個網頁,分別為login.html和Request.aspx;2〕切換到login.html頁面的源視圖,輸入如下代碼,添加用來接收用戶輸入的控件:兩個文本框和一個提交按鈕。8.2.3讀取表單傳遞的數(shù)據(jù)1.使用Write方法

例8-6使用Request對象的Browser屬性獲取客戶端瀏覽器信息

3〕切換到Request.aspx頁面的設計視圖,雙擊空白處,切換到頁面,在頁面載入事件中輸入代碼。4〕在login.html頁面單擊“運行〞按鈕。輸入用戶信息,運行效果如圖,單擊“確定〞按鈕,頁面跳轉到Request.aspx,并顯示出用戶的輸入信息,運行效果如圖。8.2.3讀取表單傳遞的數(shù)據(jù)1.使用Write方法

例8-6運行效果

8.2.4讀取查詢字符串信息

跳轉到目標頁面后,可以使用Request對象Querystring屬性讀取查詢字符串中的信息。其語法格式為:

Request.Querystring[“查詢字符串名〞]在【例8-4】中,只實現(xiàn)了帶著參數(shù)的頁面跳轉,接下來繼續(xù)實現(xiàn)后面的功能。

8.2.4讀取查詢字符串信息

頁面切換到welcome.aspx頁面,雙擊頁面空白處,切換到頁面,在頁面載入事件中輸入如下代碼:

protectedvoidPage_Load(objectsender,EventArgse){if(Request.QueryString["Username"]==null||Request.QueryString["Password"]==null){Response.Write("你沒有輸入用戶名或密碼,請返回登錄頁面重新輸入。");Response.Write("<ahref='login.aspx'>返回</a>");}

8.2.4讀取查詢字符串信息

else{Response.Write(Request.QueryString["Username"]+"你好:<br/>");Response.Write("請記住你的密碼為:"+Request.QueryString["Password"]+"</br>");Response.Write("你的愛好是:"+Request.QueryString["Like"]);}}8.2.4讀取查詢字符串信息

從login.aspx頁面運行,輸入用戶名和密碼,選擇愛好,單擊“登錄〞按鈕,頁面跳轉到welcome.aspx頁面,并且顯示出用戶在登錄頁面輸入的信息。8.2.4讀取查詢字符串信息

如果從welcome.aspx頁面直接運行或者從login.aspx頁面運行但沒有輸入用戶名或密碼,會提示用戶重新返回登錄頁面輸入用戶名和密碼。運行效果如圖。8.2.5讀取Cookie數(shù)據(jù)

使用Response對象的Cookies屬性可以創(chuàng)立Cookie對象,使用Request對象的Cookies屬性可以讀取Cookie對象的數(shù)據(jù)。其語法格式為:Request.Cookies[Cookie對象名稱]Response.Cookies["username"].Value="yinweijing";Response.Cookies["username"].Expires=DateTime.Now.AddDays(14);8.2.6讀取效勞器端的環(huán)境變量表8-6常見的環(huán)境變量

環(huán)境變量名稱說明ALL_HTTP傳送到客戶端的所有的HTTP頭數(shù)據(jù)AUTH_PASSWORD獲取客戶端用戶在確認對話框中所輸入的密碼AUTH_TYPE獲取服務器段授權的方法AUTH_USER獲取客戶端確認的用戶名CONTENT_LENGTH獲取content的數(shù)據(jù)長度CONTENT_TYPE獲取客戶端文件傳送的類型讀取效勞器端的環(huán)境變量續(xù)表8-6常見的環(huán)境變量

環(huán)境變量名稱說明HTTP_USER_AGENT獲取用戶使用的瀏覽器類型和版本LOCAL_ADDR獲取服務器端的計算機的IP地址LOGON_USER登錄WindowsNT的用戶信息PATH_INFO獲取目前網頁的虛擬目錄PATH_TRANSLATED目前所運行ASP.NET程序位于服務器端的真實路徑REMOTE_ADDR遠程主機的IP地址REMOTE_HOST遠程主機名讀取效勞器端的環(huán)境變量續(xù)表8-6常見的環(huán)境變量

環(huán)境變量名稱說明REMOTE_USER遠程的用戶名SCRIPT_NAME被運行ASP.NET文件的完整虛擬路徑SERVER_NAME獲取Web服務器端的計算機名、DNS別名或IP地址SERVER_PORT服務器端HTTP的端口SERVER_PROTOCOL獲取HTTP的版本號SERVER_SOFTWARE獲取Web服務器端的服務器名與版本URL獲取目錄網頁的存儲位置8.3Server對象

Server對象提供了對效勞器信息進行訪問的屬性和方法,能夠幫助程序判斷當前效勞器的狀態(tài)。它對應的ASP.NET類是HttpServerUtility類。

8.3.1屬性與方法8.3.2HTML編碼解碼8.3.3URL編碼解碼8.3.1屬性與方法

表8-7

Server對象的屬性

屬性名說明MachineName獲取服務器的計算機名稱。該屬性是一個只讀屬性ScriptTimeout獲取或設置請求超時的時間(單位:秒)8.3.1屬性與方法

表8-8

Server對象常用方法

方法名說明CreateObject創(chuàng)建COM對象的一個服務器實例Execute跳轉到新頁,在新頁執(zhí)行完畢后回到當前頁面HtmlEncode對要在瀏覽器中顯示的字符串進行編碼HtmlDecode提取HTML編碼的字符,并將其轉換為普通字符MapPath獲取文件所在物理路徑Transfer終止當前頁的執(zhí)行,并為當前請求開始執(zhí)行新頁UrlEncode對URL字符串進行編碼UrlDecode對URL字符串進行解碼8.3.1屬性與方法

使用Server對象的MapPath方法可以將文件的虛擬路徑映射為效勞器上的物理路徑。其語法格式為:1.MapPath方法物理路徑=Server.MapPath(虛擬路徑)8.3.1屬性與方法

1.使用Write方法

例8-7顯示當前網頁的物理路徑1〕啟動VisualStudio2023,創(chuàng)立一個空的網站website3。2〕在網站中添加一個web窗體S_MapPath.aspx。3〕在的頁面載入事件中輸入如下代碼:protectedvoidPage_Load(objectsender,EventArgse){stringvirpath=Request.FilePath;Response.Write(Server.MapPath(virpath));}8.3.1屬性與方法

1.使用Write方法

例8-7運行效果8.3.1屬性與方法

Server對象的Transfer方法可以實現(xiàn)從當前頁面跳轉到另一頁面的功能。

其語法格式為:2.Transfer方法

Server.Transfer〔url[,saveval]〕url表示要跳轉的新頁面的地址;saveval是一個可選參數(shù),表示跳轉到新的頁面后,是否保存當前頁面的Querystring和Form中的數(shù)據(jù)。

8.3.1屬性與方法

Server對象的Execute方法也可以實現(xiàn)從當前頁面跳轉到另一頁面的功能。但是與Transfer方法不同的是頁面發(fā)生跳轉后,在新頁面執(zhí)行完畢后會自動返回到原頁面,繼續(xù)執(zhí)行原頁面后續(xù)的代碼。其語法格式為:3.Execute方法

Server.Execute(url[,write])8.3.1屬性與方法

Response對象的Redirect方法也可以實現(xiàn)頁面的跳轉,但是與Server對象的這兩種方法有一些區(qū)別:Response對象的Redirect方法的頁面跳轉請求發(fā)生在客戶端,所以地址欄中的地址為跳轉后新頁面的地址;Server對象的Transfer方法和Execute方法頁面跳轉請求發(fā)生在效勞器端,客戶端瀏覽器并不知道已經進行了一次頁面跳轉,所以地址欄中的地址仍然是原頁面的地址。3.Execute方法

8.3.2HTML編碼解碼

使用Server對象的HtmlEncode方法對要在網頁上顯示的HTML標記進行編碼,然后再輸出。其語法格式為:

Server.HtmlEncode(string)同時,可以使用Server對象的HtmlDecode方法對編碼后的字符進行解碼。其語法格式為:Server.HtmlDecode(string)8.3.2HTML編碼解碼1.使用Write方法

例8-8使用Server對象的HtmlEncode方法在頁面上顯示HTML標記

1〕啟動VisualStudio2023,創(chuàng)立一個新的網站。2〕在網站中添加一個名為S_HtmlEncode.aspx的web窗體。3〕在文件的頁面載入事件中輸入如下代碼:protectedvoidPage_Load(objectsender,EventArgse){Response.Write(Server.HtmlEncode("<h3>三級標題</h3>"));Response.Write("<hr>");Response.Write(Server.HtmlDecode(Server.HtmlEncode("<h3>三級標題</h3>")));}8.3.2HTML編碼解碼1.使用Write方法

例8-8運行效果8.3.3URL編碼解碼

Server對象的UrlEncode()方法和UrlDecode()方法主要用于對URL中的特殊符號〔例如“&〞、“?〞〕進行編碼和解碼操作。其語法格式為:Server.UrlEncode(url);Server.UrlDecode(url);一般來說,URLEncode會如下轉換字符:空格會被轉換為加號“+〞,而非字母數(shù)字字符會被轉換為相應的十六進制表現(xiàn)形式。8.4page對象

命名空間中的Page類與擴展名為.aspx的文件相關聯(lián),這些文件在運行時被編譯為Page對象,并被緩存在效勞器內存中。

8.4.1Page對象的常用屬性和方法8.4.2Page對象的常用事件8.4.3WEB頁面生命周期8.4.1Page對象的常用屬性和方法

表8-9

Page對象的常用屬性

屬性名說明Controls獲取System.Web.UI.ControlCollection對象,該對象表示UI層次結構中指定服務器控件的子控件IsPostBack獲取一個值,指示該頁是否為響應客戶端回發(fā)而加載,如果是為響應客戶端回發(fā)而加載,則為true;否則為falseIsValid獲取一個值,該值指示頁驗證是否成功EnableViewState獲取或設置當前網頁請求結束時是否保持頁面的視圖狀態(tài)以及它包含的任何服務器控件的視圖狀態(tài)Validators獲取請求的網頁上包含的全部驗證控件的集合Title獲取或設置頁的標題,可以需要動態(tài)更換瀏覽器頁標題8.4.1Page對象的常用屬性和方法

Page對象的IsPostBack屬性用于獲取一個邏輯值,該值指示當前頁面是為響應客戶端回發(fā)而加載,還是正在被首次加載和訪問。“true〞表示頁面是為響應客戶端回發(fā)而加載;“false〞表示頁面是首次加載?!?〕IsPostBack屬性8.4.1Page對象的常用屬性和方法例如,在文件的頁面載入事件中輸入如下代碼:

〔1〕IsPostBack屬性protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){Response.Write("首次加載頁面,單擊按鈕引起回發(fā)");}else{Response.Write("效勞器回發(fā)網頁被刷新");}}1.使用Write方法

演示首次加載的畫面

8.4.1Page對象的常用屬性和方法頁面回發(fā)的畫面

8.4.1Page對象的常用屬性和方法

Page對象的EnableViewState屬性用于獲取或設置一個值,該值指示當前頁請求結束時該頁是否保持其視圖狀態(tài)以及它包含的任何效勞器控件的視圖狀態(tài)。假設要保存其視圖狀態(tài),那么為True,否那么為False,默認值為True。〔2〕EnableViewState屬性8.4.1Page對象的常用屬性和方法

例如,在文件中輸入如下代碼:

〔2〕EnableViewState屬性protectedvoidPage_Load(objectsender,EventArgse){this.Title="ViewState屬性測試";}protectedvoidButton1_Click(objectsender,EventArgse){ListBox1.Items.Add("客戶點擊按鈕一次");}8.4.1Page對象的常用屬性和方法

1.使用Write方法

演示用戶單擊三次的運行效果8.4.1Page對象的常用屬性和方法

如果將上述代碼稍做修改,那么程序運行后,無論單擊“測試〞按鈕幾次,在列表框里只會出現(xiàn)一次“客戶點擊按鈕一次〞?!?〕EnableViewState屬性protectedvoidPage_Load(objectsender,EventArgse){this.Title="ViewState屬性測試";

EnableViewState=false;

}protectedvoidButton1_Click(objectsender,EventArgse){ListBox1.Items.Add("客戶點擊按鈕一次");}8.4.1Page對象的常用屬性和方法

表8-10

Page對象的常用方法

方法名說明DataBind將數(shù)據(jù)源綁定到被調用的服務器控件及所有子控件FindControl(id)在頁面上搜索ID為id的服務器控件,返回值為找到的控件,控件不存在則返回nothingParseControl(content)將content指定的字符串解釋成Web窗體頁面或用戶控件的構成控件,返回值為生成的控件ReqisterClienScripBlock向頁面發(fā)出客戶端腳本塊Validate指示頁面中所有驗證控件進行驗證8.4.2Page對象的常用事件

表8-11

Page對象的常用事件

事件名說明Init事件當所有的控件都已被初始化,而且所有的面板設置都已應用之后發(fā)生PreLoad事件當頁面加載之前發(fā)生,它會加載它本身與所有控件的視圖狀態(tài),然后處理Request實例的回發(fā)數(shù)據(jù)Load事件當服務器控件加載到Page對象時發(fā)生Unload事件當服務器控件從內存中卸載時發(fā)生8.4.2Page對象的常用事件1.使用Write方法

例8-9Page對象的Init事件和Load事件的比較1〕啟動VisualStudio2023,創(chuàng)立一個新的網站;2)在網站中添加名為compare.aspx的頁面;3)在頁面的設計視圖中添加兩個列表框〔ListBox1和ListBox2〕和一個按鈕〔Button1〕;4)雙擊頁面空白處,頁面切換到頁面;8.4.2Page對象的常用事件1.使用Write方法

例8-9Page對象的Init事件和Load事件的比較4〕在Page_Load和Page_Init事件中分別輸入如下代碼:protectedvoidPage_Load(objectsender,EventArgse){ListBox2.Items.Add("頁面被加載一次");}protectedvoidPage_Init(objectsender,EventArgse){ListBox1.Items.Add("頁面被加載一次");}8.4.2Page對象的常用事件1.使用Write方法

例8-9頁面首次加載的狀態(tài)頁面回發(fā)后的狀態(tài)8.4.3WEB頁面生命周期頁面的生命周期一般只指從請求頁面到卸載頁面的過程。這之間又具體分以下幾個階段:

頁請求開始頁面初始化加載驗證回發(fā)事件處理呈現(xiàn)卸載8.5程序狀態(tài)對象ASP.NET中與狀態(tài)管理相關的對象主要有Cookie對象、Session對象和Application對象。

8.5.1Cookie對象

8.5.2Application對象

8.5.3Session對象

8.5.1Cookie對象

Cookie是一小段存儲在客戶端的文本信息。當用戶請求某頁面時,它就伴隨著用戶的請求在效勞器和瀏覽器之間來回傳遞。Cookie與網站關聯(lián)而不是與特定的頁面關聯(lián)。Cookie的值必須是字符串類型,而不是Object類型,這與Session對象和Application對象不同。8.5.1Cookie對象

Cookie對象的常用屬性

1.Cookie對象的屬性和方法

屬性名說明Name獲取或設置Cookie的名稱Value獲取或設置Cookie的值Expires獲取或設置Cookie的有效期Version獲取或設置此Cookie符合的HTTP狀態(tài)維護版本8.5.1Cookie對象

Cookie對象的常用方法

2.Cookie對象的屬性和方法

方法名說明Add創(chuàng)建一個新的Cookie變量Clear清除全部的Cookie集合內的變量Get獲取變量值GetKey獲取變量名稱Remove刪除一個Cookie對象變量8.5.1Cookie對象

創(chuàng)立Cookie使用的是Response對象的Cookies屬性,例如:2.創(chuàng)立和讀取CookieResponse.Cookies["username"].Value="zhangsan";Response.Cookies["username"].Expires=DateTime.Now.AddDays(2);讀取Cookie使用的是Request對象的Cookies屬性:

stringname=Request.Cookies[“username〞].Value;intnum=int.Parse(Request.Cookies["visitnum"].Value);8.5.1Cookie對象

2.創(chuàng)立和讀取Cookie由于瀏覽器對同一網站Cookie對象的數(shù)量有所限制,因此如果需要存儲較多的數(shù)據(jù)可以使用多值Cookie。

Response.Cookies["user"]["name"]="yinweijing";Response.Cookies["user"]["age"]="30";Response.Cookies["user"]["city"]="沈陽";Response.Cookies["user"].Expires=DateTime.Now.AddDays(14);8.5.1Cookie對象

2.創(chuàng)立和讀取Cookie讀取多值Cookie的方法為:

stringmyname=Request.Cookies["user"]["name"];intmyage=int.Parse(Request.Cookies["user"]["age"]);stringmycity=Request.Cookies["user"]["city"];8.5.1Cookie對象

3.修改

Cookie

無法從效勞器端直接修改Cookie。修改Cookie其實就相當于創(chuàng)立一個與要修改的Cookie同名的新的Cookie,設置其值為要修改成值,然后發(fā)送到瀏覽器來覆蓋客戶端上的舊版本的Cookie。例如,要將名稱為“username〞的Cookie的值由“zhangsan〞改為“張三〞:Response.Cookies["username"].Value="張三";8.5.1Cookie對象

4.刪除

Cookie

效勞器端無法對Cookie直接進行刪除??梢岳脼g覽器自動刪除到期Cookie的功能來刪除Cookie。Response.Cookies["username"].Value="zhangsan";Response.Cookies["username"].Expires=DateTime.Now.AddDays(-1);對于多值Cookie,有時候并不需要刪除整個Cookie,而是刪除其中的某個子屬性

。8.5.1Cookie對象1.使用Write方法

例8-10登錄時記住用戶名和密碼1〕啟動VisualStudio2023,新建一個網站。2〕在站點中添加一個名為login.aspx的web窗體。3〕在login.aspx的設計視圖中添加兩個文本框,兩個按鈕和一個復選框并設置其相應的屬性,8.5.1Cookie對象4〕切換到頁面,在頁面載入事件中輸入如下代碼:protectedvoidPage_Load(objectsender,EventArgse){if(Request.Cookies["username"]!=null&&Request.Cookies["password"]!=null){TextBox1.Text=Request.Cookies["username"].Value.ToString();TextBox2.Text=Request.Cookies["password"].Value.ToString();}}8.5.1Cookie對象5〕在“登錄〞按鈕的Click事件中輸入如下代碼:protectedvoidButton1_Click(objectsender,EventArgse){if(CheckBox1.Checked){Response.Cookies["username"].Value=TextBox1.Text;Response.Cookies["username"].Expires=DateTime.Now.AddDays(14);Response.Cookies["password"].Value=TextBox2.Text;Response.Cookies["password"].Expires=DateTime.Now.AddDays(14);}Response.Redirect("welcome.aspx");}8.5.1Cookie對象1.使用Write方法

例8-10單擊“運行〞按鈕首次訪問網站時兩個文本框內均為空,輸入完用戶名和密碼后,單擊“登錄〞按鈕,頁面跳轉到歡送頁面。關閉瀏覽器,重新登錄該頁面,兩個文本框內已經填寫好了用戶名和密碼。8.5.2Application對象

Application對象的常用屬性

1.Application對象的屬性和方法

屬性名說明All獲取全部的Application對象變量并存儲到一個Object類型的數(shù)組中AllKeys獲取全部Application對象變量名稱并存儲到一個字符串類型的數(shù)組中Count獲取Application對象的變量的數(shù)量Item使用索引或Application變量名傳回Application變量值8.5.2Application對象

Application對象的常用方法

1.Application對象的屬性和方法

方法名說明Add創(chuàng)建一個新的Application對象變量Clear清除全部的Application對象變量Get獲取變量值GetKey獲取變量名稱Lock鎖定全部的Application變量Remove刪除一個Application對象變量RemoveAll刪除全部的Application對象變量Set修改Application對象變量的值UnLock接觸鎖定的Application變量8.5.2Application對象

2.創(chuàng)立Application對象變量使用Application對象的Add方法可以創(chuàng)立一個新的Application對象變量,其語法格式為:Application.Add(“變量名〞,變量值);或者也可以直接創(chuàng)立,其語法格式為:Application[“變量名〞]=變量值;8.5.2Application對象

例如創(chuàng)立兩個Application對象變量,并在瀏覽器上輸出出來的代碼為:protectedvoidPage_Load(objectsender,EventArgse){Application.Add("visitnum",0);Application["welcome"]="你好!";for(inti=0;i<Application.Count;i++){Response.Write(Application.GetKey(i)+"的值為:"+Application.Get(i)+"<br/>");}Application.Clear();}8.5.2Application對象

3.讀取Application對象變量

Application對象變量存儲的數(shù)據(jù)類型為Object類型,因此,在讀取數(shù)據(jù)時必須將其強制轉換為相應的數(shù)據(jù)類型。

if(Application["visitnum"]!=null){intnum=(int)Application["visitnum"];}8.5.2Application對象

4.修改Application對象使用Application對象的Set方法可以修改Application對象變量的值。其語法格式為:

Application.Set("變量名",修改后的值);為了防止產生無效的數(shù)據(jù),在修改變量的值之前必須先鎖定Application對象,只供一個用戶修改,用戶修改完后再解除鎖定的變量。鎖定和解鎖變量使用Application對象的Lock()和UnLock()方法。

1.使用Write方法

例8-11使用Application對象統(tǒng)計網站內廣告條被點擊的次數(shù)1〕啟動VisualStudio2023,創(chuàng)立新的網站。2〕在該站點中新建兩個web窗體,名稱分別為“advert.aspx〞和“welcome.aspx〞。3〕在“advert.aspx〞設計視圖,添加一個“ImageButton〞控件,在控件中添加圖片“1.jpg〞。8.5.2Application對象

4〕雙擊設計視圖中的“ImageButton〞控件,頁面切換到“〞,在“ImageButton1_Click〞事件中輸入如下代碼:Application.Lock();if(Application["clicknum"]==null){Application["clicknum"]=1;}else{Application["clicknum"]=(int)Application["clicknum"]+1;}Application.UnLock();Response.Redirect("welcome.aspx");8.5.2Application對象

5〕切換到“welcome.aspx〞頁面,在設計視圖中添加一個“Label〞控件。6〕切換到“〞頁面,在頁面載入事件中輸入如下代碼:protectedvoidPage_Load(objectsender,EventArgse){if(Application["clicknum"]!=null){Label1.Text="此廣告已經被點擊了"+Application["clicknum"].ToString()+"次。";}}8.5.2Application對象

1.使用Write方法

例8-11

advert.aspx廣告頁面查看點擊次數(shù)畫面

8.5.2Application對象

8.5.3Session對象Session對象用于保存用戶從登錄網頁到離開這段時間內的相關信息,如用戶名、密碼、IP地址、訪問時間等。當用戶請求一個ASP.NET頁面時,系統(tǒng)會自動創(chuàng)立一個Session,退出應用程序或關閉效勞器時該會話撤銷。系統(tǒng)為每一次會話分配一個唯一的會話標識〔SessionID〕,能夠唯一標識一個用戶。SessionID的保存位置有兩種:保存在客戶端的Cookie內嵌套在URL中8.5.3Session對象1.Session對象、Cookie對象和Application對象的區(qū)別Session對象、Cookie對象和Application對象的區(qū)別

對象名信息量保存時間應用范圍保存位置Cookie對象小量,簡單的數(shù)據(jù)用戶設定單個用戶客戶端Session對象任意大小默認20分鐘,可以修改單個用戶服務器端Application對象任意大小應用程序整個生命周期所有用戶服務器端8.5.3Session對象2.Session對象的屬性、方法和事件

Session對象的屬性

屬性名說明Count獲取Session對象集合中子對象的數(shù)量Iscookieless獲取一個布爾值,表示SessionID存放在Cookie中還是嵌套在URL中,ture表示嵌套在URL中IsNewSession獲取一個布爾值,表示擁護在訪問頁面時是否創(chuàng)建了新的會話IsReadOnly獲取一個布爾值,表示Session對象是否為只讀SessionID獲取用于標識Session對象的唯一ID值TimeOut獲取或設置在會話期間個請求的超時期限,單位為分鐘,默認為20分鐘8.5.3Session對象2.Session對象的屬性、方法和事件

Session對象的方法

方法名說明Abandon取消當前會話Add新增一個Session對象Clear清除會話狀態(tài)中的所有值Remove刪除會話狀態(tài)集合中的指定項RemoveAll刪除會話狀態(tài)集合中的所有項RemoveAt(index)刪除會話狀態(tài)集合中指定索引處的項8.5.3Session對象2.Session對象的屬性、方法和事件

Session對象的事件

事件名說明Session_End在會話結束時觸發(fā),一般在服務器重新啟動、用戶調用了Session_Abandon()方法或未執(zhí)行任何操作達到了Session.Timeout設置的時間是會被觸發(fā)Session_Start在創(chuàng)建會話時觸發(fā)8.5.3Session對象2.Session對象的屬性、方法和事件

Session對象的Start事件和End事件,以及Application對象的Start事件和End事件這四個事件執(zhí)行的先后順序為:

Application_Start事件Session_Start事件Session_End事件Application_End事件8.5.3Session對象3.存取Session對象

〔1〕將數(shù)據(jù)存入Session對象將數(shù)據(jù)存入Session對象語法比較簡單。其語法格式為:Session[“對象名稱〞]=對象的值;或者使用Add方法:

Session.Add(“對象名稱〞,對象的值);8.5.3Session對象3.存取Session對象

〔2〕讀取Session對象的值讀取Session對象的值的語法格式為:變量=Session[“對象名稱〞];例如,在頁面的載入事件中輸入如下的代碼:

protectedvoidPage_Load(objectsender,EventArgse){Session["username"]="張三";Session.Add("password","123456");intAge=20;8.5.3Session對象3.存取Session對象

〔2〕讀取Session對象的值Session["age"]=Age;Session["username"]="李四";stringname=Session["username"].ToString();stringpwd=(string)Session["password"];intuage=(int)Session["age"];Response.Write("你好"+name+",請確認你的信息:<br/>");Response.Write("密碼:"+pwd+"<br/>");Response.Write("年齡:"+uage+"<br/>");}8.5.3Session對象3.存取Session對象

1.使用Write方法

演示

Session對象讀寫操作運行效果

8.5.3Session對象3.存取Session對象

從本程序中可以總結出以下幾點:可以將任何類型的數(shù)據(jù)或變量直接寫入到Session對象中。可以先定義一個變量,然后將變量賦值給Session對象。讀取Session對象的值時,必須先將其顯示轉化為相應的數(shù)據(jù)類型。如果將數(shù)據(jù)保存到一個已經存在的Session對象名的Session對象中時,并不會創(chuàng)立一個新的Session對象,而是將原來的數(shù)據(jù)覆蓋。8.5.3Session對象3.存取Session對象

1.使用Write方法

例8-12使用Session對象進行頁面間傳值

1〕啟動VisualStudio2023,創(chuàng)立一個新的網站website4。2〕在網站中添加兩個web窗體,分別為index.aspx和welcome.aspx。3〕在index.aspx頁面添加用戶登錄所需的控件:兩個文本框和一個按鈕。并設置其相應的屬性。4〕雙擊“登錄〞按鈕,切換到頁面,在Button1_Click事件中輸入如下代碼:protectedvoidButton1_Click(objectsender,EventArgse){if(TextBox1.Text!=""&&TextBox2.Text!=""){Session["flag"]="Yes";}Session["username"]=TextBox1.Text;Session["password"]=TextBox2.Text;Response.Redirect("welcome.aspx");}8.5.3Session對象5〕切換到頁面,在頁面載入〔Page_Load〕事件中中輸入如下代碼:protectedvoidPage_Load(objectsender,EventArgse){if(Session["flag"]==null){Response.Write("請<ahref='index.aspx'>返回</a>登錄頁面輸入用戶名和密碼");}if(Session["username"]!=null&&Session["password"]!=null){stringname=Session["username"].ToString();stringpwd=Session["password"].ToString();Response.Write("歡送"+name+"光臨本站,請記住你的密碼:"+pwd);}}8.5.3Session對象1.使用Write方法

例8-12登錄頁面運行效果

歡送頁面運行效果8.5.3Session對象1.使用Write方法

例8-12出錯提示效果

8.5.3Session對象8.5.3Session對象3.存取Session對象

1.使用Write方法

例8-13使用Session對象統(tǒng)計網站的在線人數(shù)1〕啟動VisualStudio2023,創(chuàng)立一個新的網站。2〕在解決方案資源管理器中右鍵單擊站點的名稱,在彈出的快捷菜單中選擇“添加〞命令,然后在菜單中選擇“添加新項〞命令,在彈出的對話框中選擇“全局應用程序類〞模板后單擊“添加〞按鈕。3〕系統(tǒng)自動在代碼窗口中翻開Global.asax文件,該文件中已經創(chuàng)立好了關于Application對象、Session對象的Start和End的空事件,輸入如下代碼:voidApplication_Start(objectsender,EventArgse){//在應用程序啟動時運行的代碼

Application["onlinenum"]=0;}8.5.3Session對象voidApplication_End(objectsender,EventArgse){//在應用程序關閉時運行的代碼

}voidApplication_Error(objectsender,EventArgse){//在出現(xiàn)未處理的錯誤時運行的代碼

}8.5.3Session對象voidSession_Start(objectsender,EventArgse){//在新會話啟動時運行的代碼

Application.Lock();Application.Set("onlinenum",(int)Application["onlinenum"]+1);Application.UnLock();}8.5.3Session對象voidSession_End(objectsender,EventArgse){//在會話結束時運行的代碼。//注意:只有在Web.config文件中的sessionstate模式設置為//InProc時,才會引發(fā)Session_End事件。如果會話模式設置為StateServer//或SQLServer,那么不引發(fā)該事件。Application.Lock();Application.Set("onlinenum",(int)Application["onlinenum"]-1);Application.UnLock();}8.5.3Session對象4〕在解決方案資源管理器中,雙擊翻開Web.config文件,在<system.web>和</system.web>之間填寫代碼。5〕切換到頁面,在頁面載入事件中輸入如下代碼:protectedvoidPage_Load(objectsender,EventArgse){Response.Write("當前的在線人數(shù)為:"+Application["onlinenum"]);Response.AddHeader("refresh","60");}8.5.3Session對象8.5.3Session對象3.存取Session對象

1.使用Write方法

例8-13單擊“運行〞按鈕,“當前在線人數(shù)〞效果8.6案例:一個簡單的在線聊天室案例:一個簡單的在線聊天室

設計一個簡單的在線聊天室。在網站中添加兩個web窗體,分別為:Login.aspx和Chat.aspx。前者用來用戶登錄,后者作為聊天交互界面。

8.6.1案例設計8.6.2案例實現(xiàn)8.6.1案例設計設計一個簡單的在線聊天室。在網站中添加兩個web窗體,分別為:Login.aspx和Chat.aspx。前者用來用戶登錄,后者作為聊天交互界面。

8.6.2案例實現(xiàn)1〕啟動VisualStudio2023,創(chuàng)立一個新的網站。在網站中添加兩個web窗體,分別為:Login.aspx和Chat.aspx。2〕切換到登錄頁面Login.aspx的設計視圖,添加一個Table控件進行頁面布局,添加兩個文本框控件和兩個按鈕控件,用于接收用戶的登錄信息,并設置各個控件相應的屬性。同時,設置登錄按鈕的單擊事件,在頁面中輸入如下代碼:8.6.2案例實現(xiàn)protectedvoidButton1_Click(objectsender,EventArgse){if(username.Text==""||pwd.Text==""){Response.Write("<scriptlanguage=javascript>alert('請輸入用戶名和密碼!')</script>");}else{Session["name"]=username.Text;Response.Redirect("Chat.aspx");}}8.6.2案例實現(xiàn)8.6.2案例實現(xiàn)3〕頁面切換到Chat.aspx的設計視圖,在頁面的<div></div>標記中間再添加五個層:在第一個層中輸入文字“在線聊天室〞,并設置其格式;在第二個層中添加一個Label控件,用來顯示在線人數(shù);在第三個層中添加一個TextBox控件,并設置其TextMode屬性值為“MultiLine〞;在第四個層中添加一個Label控件和一個TextBox控件,用來顯示用戶名及接收用戶輸入的聊天內容;在第五個層中添加一個Button控件,用于用戶提交聊天內容。8.6.2案例實現(xiàn)在線聊天室頁面布局效果

8.6.2案例實現(xiàn)4〕右鍵單擊站點名稱,添加一個Global.asax全局文件。在文件代碼中添加Application_Start、Session_Start、Session_End事件代碼:voidApplication_Start(objectsender,EventArgse){Application["online"]=0;//在線人數(shù)初始值為0Application["chat"]="";//聊天內容初始值為空

}8.6.2案例實現(xiàn)voidSession_Start(objectsender,EventArgse){Application.Lock();;Application.Set("online"

溫馨提示

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

評論

0/150

提交評論