ASP.NET的內(nèi)置對象介紹:
1.Response 2.Request 3.Server 4.Application 5.Session 6.Cookie 一、Request對象主要是讓服務(wù)器取得客戶端瀏覽器的一些數(shù)據(jù),包括從HTML表單用Post或者GET方法傳遞的參數(shù)、Cookie和用戶認(rèn)證。因?yàn)镽equest對象是Page對象的成員之一,所以在程序中不需要做任何的聲明即可直接使用; 其類名為 HttpRequest 屬性很多,但方法很少,只有一個BinaryRead() 1.使用Request.Form屬性獲取數(shù)據(jù) 通過該屬性,讀取<Form></Form>之間的表單數(shù)據(jù).注意:提交方式要設(shè)置為“Post”。 與Get方法相比較,使用Post方法可以將大量數(shù)據(jù)發(fā)送到服務(wù)器端 2.利用Request.QueryString屬性獲取數(shù)據(jù) Request對象的QuerySting屬性可以獲取 HTTP 查詢字符串變量集合 。 通過該屬性,我們可以讀取地址信息 http://localhost/aaa.aspx?uid=tom&pwd=abc 其中標(biāo)識為紅色部分的數(shù)據(jù). 注意:提交方式要設(shè)置為“Get” 3.問題:Request.Form用于表單提交方式為Post的情況,而Request.QueryString用于表單提交方式為Get的情況,如果用錯,則獲取不到數(shù)據(jù)。 解決方法:利用Request(“元素名”)來簡化操作。 4.Request.ServerVariables("環(huán)境變量名稱") 類似的還有:UserHostAddress,Browser,Cookies,ContentType,IsAuthenticated,Item,Params 二、Response對象用語輸出數(shù)據(jù)到客戶端,包括向?yàn)g覽器輸出數(shù)據(jù)、重定向?yàn)g覽器到另一個URL或向?yàn)g覽器輸出Cookie文件。 其類名為httpResponse 屬性和方法 Write() 向客戶端發(fā)送字符串信息 BufferOutPut屬性 是否使用緩存 Clear() 清除緩存 Flush() 強(qiáng)制輸出緩存的所有數(shù)據(jù) Redirect() 網(wǎng)頁轉(zhuǎn)向地址 End() 終止當(dāng)前頁的運(yùn)行 WriteFile() 讀取一個文件,并且寫入客戶端輸出流 (實(shí)質(zhì):打開文件,并且輸出到客戶端。) 1.Response.Write 變量數(shù)據(jù)或字符串 Response.Write (變量數(shù)據(jù)或字符串) <%=…%> Response.Write("<script language=javascript>alert('歡迎學(xué)習(xí)ASP.NET')</script>") Response.Write("<script>window.open('WebForm2.aspx')</script>") 2.Response對象的Redirect方法將客戶端瀏覽器重定向到另外的URL上,即跳轉(zhuǎn)到另一個網(wǎng)頁。 例如: Response.Redirect("http://www.163.net/") 3. Response.End() 終止當(dāng)前頁的運(yùn)行 4.Response.WriteFile(FileName) (其中,F(xiàn)ileName 指代需向?yàn)g覽器輸出的文件的文件名) 三、Server對象提供對服務(wù)器上的方法和屬性進(jìn)行的訪問 .其類名稱是HttpServerUtility. Server對象的主要屬性有: MachineName:獲取服務(wù)器的計(jì)算機(jī)名稱。 ScriptTimeout:獲取和設(shè)置請求超時(以秒計(jì))。 方法名稱 說明 CreateObject 創(chuàng)建 COM 對象的一個服務(wù)器實(shí)例。 Execute 執(zhí)行當(dāng)前服務(wù)器上的另一個aspx頁,執(zhí)行完該頁后再返回本頁繼續(xù)執(zhí)行 HtmlEncode 對要在瀏覽器中顯示的字符串進(jìn)行HTML編碼并返回已編碼的字符串。 HtmlDecode 對HTML編碼的字符串進(jìn)行解碼,并返回已解碼的字符串。 MapPath 返回與 Web 服務(wù)器上的指定虛擬路徑相對應(yīng)的物理文件路徑。 Transfer 終止當(dāng)前頁的執(zhí)行,并為當(dāng)前請求開始執(zhí)行新頁。 UrlEncode 將代表URL的字符串進(jìn)行編碼,以便通過 URL 從 Web 服務(wù)器到客戶端進(jìn)行可靠的 HTTP 傳輸。 UrlDecode 對已被編碼的URL字符串進(jìn)行解碼,并返回已解碼的字符串。 UrlPathEncode 對 URL 字符串的路徑部分進(jìn)行 URL 編碼,并返回已編碼的字符串。 編碼: Server.HtmlEncode(“HTML代碼”) 解碼: Server.HtmlDecode(“已編碼的HTML”) 1.Server對象的MapPath方法將虛擬路徑或相對于當(dāng)前頁的相對路徑轉(zhuǎn)化為Web 服務(wù)器上的物理文件路徑。 語法:Server.MapPath(“虛擬路徑”) String FilePath FilePath = Server.MapPath(“/”) Response.Write(FilePath) 四、Application對象在實(shí)際網(wǎng)絡(luò)開發(fā)中的用途就是記錄整個網(wǎng)絡(luò)的信息,如上線人數(shù)、在線名單、意見調(diào)查和網(wǎng)上選舉等。在給定的應(yīng)用程序的多有用戶之間共享信息,并在服務(wù)器運(yùn)行期間持久的保存數(shù)據(jù)。而且Application對象還有控制訪問應(yīng)用層數(shù)據(jù)的方法和可用于在應(yīng)用程序啟動和停止時觸發(fā)過程的事件。 1.使用Application對象保存信息 使用Application對象保存信息 Application(“鍵名”) = 值 或 Application(“鍵名”,值) 獲取Application對象信息 變量名 = Application(“鍵名”) 或:變量名 = Application.Item(“鍵名”) 或:變量名 = Application.Get(“鍵名”) 更新Application對象的值 Application.Set(“鍵名”, 值) 刪除一個鍵 Application.Remove(“鍵名”, 值) 刪除所有鍵 Application.RemoveAll() 或Application.Clear() 2.有可能存在多個用戶同時存取同一個Application對象的情況。這樣就有可能出現(xiàn)多個用戶修改同一個Application命名對象,造成數(shù)據(jù)不一致的問題。 HttpApplicationState 類提供兩種方法 Lock 和 Unlock,以解決對Application對象的訪問同步問題,一次只允許一個線程訪問應(yīng)用程序狀態(tài)變量。 關(guān)于鎖定與解鎖 鎖定:Application.Lock() 訪問:Application(“鍵名”) = 值 解鎖:Application.Unlock() 注意:Lock方法和UnLock方法應(yīng)該成對使用。 可用于網(wǎng)站訪問人數(shù),聊天室等設(shè)備 3. 使用Application事件 在ASP.NET 應(yīng)用程序中可以包含一個特殊的可選文件——Global.asax 文件,也稱作 ASP.NET 應(yīng)用程序文件,它包含用于響應(yīng) ASP.NET或HTTP模塊引發(fā)的應(yīng)用程序級別事件的代碼。 Global.asax 文件提供了7個事件,其中5個應(yīng)用于Application對象 事件名稱 說明 Application_Start 在應(yīng)用程序啟動時激發(fā) Application_BeginRequest 在每個請求開始時激發(fā) Application_AuthenticateRequest 嘗試對使用者進(jìn)行身份驗(yàn)證時激發(fā) Application_Error 在發(fā)生錯誤時激發(fā) Application_End 在應(yīng)用程序結(jié)束時激發(fā) 五、Session即會話,是指一個用戶在一段時間內(nèi)對某一個站點(diǎn)的一次訪問。 Session對象在.NET中對應(yīng)HttpSessionState類,表示“會話狀態(tài)”,可以保存與當(dāng)前用戶會話相關(guān)的信息。 Session對象用于存儲從一個用戶開始訪問某個特定的aspx的頁面起,到用戶離開為止,特定的用戶會話所需要的信息。用戶在應(yīng)用程序的頁面切換時,Session對象的變量不會被清除。 對于一個Web應(yīng)用程序而言,所有用戶訪問到的Application對象的內(nèi)容是完全一樣的;而不同用戶會話訪問到的Session對象的內(nèi)容則各不相同。 Session可以保存變量,該變量只能供一個用戶使用,也就是說,每一個網(wǎng)頁瀏覽者都有自己的Session對象變量,即Session對象具有唯一性。 (1)將新的項(xiàng)添加到會話狀態(tài)中 語法格式為: Session ("鍵名") = 值 或者 Session.Add( "鍵名" , 值) (2)按名稱獲取會話狀態(tài)中的值 語法格式為: 變量 = Session ("鍵名") 或者 變量 = Session.Item("鍵名") (3)刪除會話狀態(tài)集合中的項(xiàng) 語法格式為: Session.Remove("鍵名") (4)清除會話狀態(tài)中的所有值 語法格式為: Session.RemoveAll() 或者 Session.Clear() (5)取消當(dāng)前會話 語法格式為: Session.Abandon() (6)設(shè)置會話狀態(tài)的超時期限,以分鐘為單位。 語法格式為: Session.TimeOut = 數(shù)值 Global.asax 文件中有2個事件應(yīng)用于Session對象 事件名稱 說明 Session_Start 在會話啟動時激發(fā) Session_End 在會話結(jié)束時激發(fā) 六、Cookie就是Web服務(wù)器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點(diǎn)在用戶的電腦上保存信息并且隨后再取回它。信息的片斷以‘鍵/值’對的形式存儲。 Cookie是保存在客戶機(jī)硬盤上的一個文本文件,可以存儲有關(guān)特定客戶端、會話或應(yīng)用程序的信息,在.NET中對應(yīng)HttpCookie類。 有兩種類型的Cookie:會話Cookie(Session Cookie)和持久性Cookie。前者是臨時性的,一旦會話狀態(tài)結(jié)束它將不復(fù)存在;后者則具有確定的過期日期,在過期之前Cookie在用戶的計(jì)算機(jī)上以文本文件的形式存儲。 在服務(wù)器上創(chuàng)建并向客戶端輸出Cookie可以利用Response對象實(shí)現(xiàn)。 Response對象支持一個名為Cookies的集合,可以將Cookie對象添加到該集合中,從而向客戶端輸出Cookie。 Response對象用語輸出數(shù)據(jù)到客戶端,包括向?yàn)g覽器輸出數(shù)據(jù)、重定向?yàn)g覽器到另一個URL或向?yàn)g覽器輸出Cookie文件。 其類名為httpResponse 屬性和方法 Write() 向客戶端發(fā)送字符串信息 BufferOutPut屬性 是否使用緩存 Clear() 清除緩存 Flush() 強(qiáng)制輸出緩存的所有數(shù)據(jù) Redirect() 網(wǎng)頁轉(zhuǎn)向地址 End() 終止當(dāng)前頁的運(yùn)行 WriteFile() 讀取一個文件,并且寫入客戶端輸出流 (實(shí)質(zhì):打開文件,并且輸出到客戶端。) 1.Response.Write 變量數(shù)據(jù)或字符串 Response.Write (變量數(shù)據(jù)或字符串) <%=…%> 例如: <% int i; i = 0; for (; i < 10; i++) Response.Write(i.ToString() + "<br />"); %> <hr /> <%
for (i=0; i < 10; i++) { %> *<br /> <% } %>
Response.Write("<script language=javas Response.Write("<script>window.open('WebForm2.aspx')</script>")
添加新項(xiàng),一般處理程序,運(yùn)行改頁面時,可以實(shí)現(xiàn)資料的下載。(必須先在根目錄下新建1.xls文件) <%@ WebHandler Language="C#" Class="Handler" %> using System; using System.Web; public class Handler : IhttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "Application/msexcel"; context.Response.WriteFile("1.xls"); } public bool IsReusable { get { return false; } } } 2.Response對象的Redirect方法將客戶端瀏覽器重定向到另外的URL上,即跳轉(zhuǎn)到另一個網(wǎng)頁。 例如: Response.Redirect("http://www.163.net/") 3. Response.End() 終止當(dāng)前頁的運(yùn)行 4.Response.WriteFile(FileName) 其中: FileName 指代需向?yàn)g覽器輸出的文件的文件名
Server對象提供對服務(wù)器上的方法和屬性進(jìn)行的訪問 .其類名稱是HttpServerUtility. Server對象的主要屬性有: MachineName:獲取服務(wù)器的計(jì)算機(jī)名稱。 ScriptTimeout:獲取和設(shè)置請求超時(以秒計(jì))。 方法名稱 說明 CreateObject 創(chuàng)建 COM 對象的一個服務(wù)器實(shí)例。 Execute 執(zhí)行當(dāng)前服務(wù)器上的另一個aspx頁,執(zhí)行完該頁后再返回本頁繼續(xù)執(zhí)行 HtmlEncode 對要在瀏覽器中顯示的字符串進(jìn)行HTML編碼并返回已編碼的字符串。 HtmlDecode 對HTML編碼的字符串進(jìn)行解碼,并返回已解碼的字符串。 MapPath 返回與 Web 服務(wù)器上的指定虛擬路徑相對應(yīng)的物理文件路徑。 Transfer 終止當(dāng)前頁的執(zhí)行,并為當(dāng)前請求開始執(zhí)行新頁。 UrlEncode 將代表URL的字符串進(jìn)行編碼,以便通過 URL 從 Web 服務(wù)器到客戶端進(jìn)行可靠的 HTTP 傳輸。 UrlDecode 對已被編碼的URL字符串進(jìn)行解碼,并返回已解碼的字符串。 UrlPathE ncode 對 URL 字符串的路徑部分進(jìn)行 URL 編碼,并返回已編碼的字符串。 編碼: Server.HtmlEncode(“HTML代碼”) 解碼: Server.HtmlDecode(“已編碼的HTML”) 1.Server對象的MapPath方法將虛擬路徑或相對于當(dāng)前頁的相對路徑轉(zhuǎn)化為Web 服務(wù)器上的物理文件路徑。 語法:Server.MapPath(“虛擬路徑”) String FilePath FilePath = Server.MapPath(“/”) Response.Write(FilePath) 在default .aspx的HyperLink將其屬性NavigateUrl設(shè)為Default2.aspx?i=計(jì)算機(jī) 再在代碼中定義this.Label1.Text=Server.UrlDecode( Request.QueryString["i"]); 當(dāng)點(diǎn)擊HyperLink時可以看到LABEL的值, 但此時并不是“計(jì)算機(jī)”。 單純的文本用URL會講值傳掉。 可以先定義this.Label2.Text= Server.UrlEncode("計(jì)算機(jī)"); 瀏覽頁面后將Label2的值復(fù)制, 再在地址后面加上i=復(fù)制Label2的值 點(diǎn)擊回車鍵之后可以看到此時的LABEL1 顯示的是完整的“計(jì)算機(jī)”。 Application對象在實(shí)際網(wǎng)絡(luò)開發(fā)中的用途就是記錄整個網(wǎng)絡(luò)的信息,如上線人數(shù)、在線名單、意見調(diào)查和網(wǎng)上選舉等。在給定的應(yīng)用程序的多有用戶之間共享信息,并在服務(wù)器運(yùn)行期間持久的保存數(shù)據(jù)。而且Application對象還有控制訪問應(yīng)用層數(shù)據(jù)的方法和可用于在應(yīng)用程序啟動和停止時觸發(fā)過程的事件。 1.使用Application對象保存信息 使用Application對象保存信息 Application(“鍵名”) = 值 或 Application(“鍵名”,值) 獲取Application對象信息 變量名 = Application(“鍵名”) 或:變量名 = Application.Item(“鍵名”) 或:變量名 = Application.Get(“鍵名”) 更新Application對象的值 Application.Set(“鍵名”, 值) 刪除一個鍵 Application.Remove(“鍵名”, 值) 刪除所有鍵 Application.RemoveAll() 或Application.Clear() 2.有可能存在多個用戶同時存取同一個Application對象的情況。這樣就有可能出現(xiàn)多個用戶修改同一個Application命名對象,造成數(shù)據(jù)不一致的問題。 HttpApplicationState 類提供兩種方法 Lock 和 Unlock,以解決對Application對象的訪問同步問題,一次只允許一個線程訪問應(yīng)用程序狀態(tài)變量。 關(guān)于鎖定與解鎖 鎖定:Application.Lock() 訪問:Application(“鍵名”) = 值 解鎖:Application.Unlock() 注意:Lock方法和UnLock方法應(yīng)該成對使用。 可用于網(wǎng)站訪問人數(shù),聊天室等設(shè)備 3. 使用Application事件 在ASP.NET 應(yīng)用程序中可以包含一個特殊的可選文件——Global.asax 文件,也稱作 ASP.NET 應(yīng)用程序文件,它包含用于響應(yīng) ASP.NET或HTTP模塊引發(fā)的應(yīng)用程序級別事件的代碼。 Global.asax 文件提供了7個事件,其中5個應(yīng)用于Application對象 事件名稱 說明 Application_Start 在應(yīng)用程序啟動時激發(fā) Application_BeginRequest 在每個請求開始時激發(fā) Application_AuthenticateRequest 嘗試對使用者進(jìn)行身份驗(yàn)證時激發(fā) Application_Error 在發(fā)生錯誤時激發(fā) Application_End 在應(yīng)用程序結(jié)束時激發(fā) 在Global.asax中,定義: void Application_Start(object sender, EventArgs e) } 再在defalut.aspx的PAGE_LOAD中定義: this.Label2.Text = Application["k1"].ToString(); 打開此頁面時候Label2顯示的是 1; 但當(dāng)在defalut2.aspx的PAGE_LOAD中定義: Application["k1"] = 2; 再打開defalut.aspx時顯示的是2; Session即會話,是指一個用戶在一段時間內(nèi)對某一個站點(diǎn)的一次訪問。 Session對象在.NET中對應(yīng)HttpSessionState類,表示“會話狀態(tài)”,可以保存與當(dāng)前用戶會話相關(guān)的信息。 Session對象用于存儲從一個用戶開始訪問某個特定的aspx的頁面起,到用戶離開為止,特定的用戶會話所需要的信息。用戶在應(yīng)用程序的頁面切換時,Session對象的變量不會被清除。 對于一個Web應(yīng)用程序而言,所有用戶訪問到的Application對象的內(nèi)容是完全一樣的;而不同用戶會話訪問到的Session對象的內(nèi)容則各不相同。 Session可以保存變量,該變量只能供一個用戶使用,也就是說,每一個網(wǎng)頁瀏覽者都有自己的Session對象變量,即Session對象具有唯一性。 (1)將新的項(xiàng)添加到會話狀態(tài)中 語法格式為: Session ("鍵名") = 值 或者 Session.Add( "鍵名" , 值) (2)按名稱獲取會話狀態(tài)中的值 語法格式為: 變量 = Session ("鍵名") 或者 變量 = Session.Item("鍵名") (3)刪除會話狀態(tài)集合中的項(xiàng) 語法格式為: Session.Remove("鍵名") (4)清除會話狀態(tài)中的所有值 語法格式為: Session.RemoveAll() 或者 Session.Clear() (5)取消當(dāng)前會話 語法格式為: Session.Abandon() (6)設(shè)置會話狀態(tài)的超時期限,以分鐘為單位。 語法格式為: Session.TimeOut = 數(shù)值 Global.asax 文件中有2個事件應(yīng)用于Session對象 事件名稱 說明 Session_Start 在會話啟動時激發(fā) Session_End 在會話結(jié)束時激發(fā) 在defalut.aspx的BUTTON1中寫: protected void Button1_Click(object sender, EventArgs e) } 再在defalut2.aspx的PAGE_LOAD中定義: this.Label2.Text=(Session["u"] == null) ? "" : Session["u"].ToString(); 瀏覽defalut.aspx,在this.TextBox1.Text輸入內(nèi)容,再進(jìn)入到defalut2.aspx中可以看到輸入的值。但等一分鐘后再刷新該頁面,沒有值顯示 因?yàn)?Session.Timeout = 1已經(jīng)產(chǎn)生了過期時間。
Cookie就是Web服務(wù)器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點(diǎn)在用戶的電腦上保存信息并且隨后再取回它。信息的片斷以‘鍵/值’對的形式存儲。 Cookie是保存在客戶機(jī)硬盤上的一個文本文件,可以存儲有關(guān)特定客戶端、會話或應(yīng)用程序的信息,在.NET中對應(yīng)HttpCookie類。 有兩種類型的Cookie:會話Cookie(Session Cookie)和持久性Cookie。前者是臨時性的,一旦會話狀態(tài)結(jié)束它將不復(fù)存在;后者則具有確定的過期日期,在過期之前Cookie在用戶的計(jì)算機(jī)上以文本文件的形式存儲。 在服務(wù)器上創(chuàng)建并向客戶端輸出Cookie可以利用Response對象實(shí)現(xiàn)。 Response對象支持一個名為Cookies的集合,可以將Cookie對象添加到該集合中,從而向客戶端輸出Cookie。 通過Request對象的Cookies集合來訪問Cookie
在defalut.aspx的BUTTON1中寫: protected void Button1_Click(object sender, EventArgs e) 此時在頁面的工具菜單中,可以在Cookies文件查看到剛才新增的文件 |