ASP.NET內(nèi)置對象有什么用-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“ASP.NET內(nèi)置對象有什么用”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)、遂寧聯(lián)通機(jī)房解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站建設(shè)、政府網(wǎng)站等各類型客戶群體,為全球數(shù)千家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。

為什么學(xué)習(xí)ASP.NET內(nèi)置對象

在ASP.NET中微軟提供了多種內(nèi)置對象提供開發(fā)人員使用,在實(shí)際開發(fā)中內(nèi)置對象的使用不可或缺的,在Web網(wǎng)站的數(shù)據(jù)交互,網(wǎng)頁服務(wù)器交互,網(wǎng)頁跳轉(zhuǎn),服務(wù)器數(shù)據(jù)的傳輸?shù)绕渲e足輕重的作用。在初學(xué)ASP.NET技術(shù)中也是非常重要的環(huán)節(jié),也是更深學(xué)習(xí)ASP.NET的“里程碑”。本文章主要介紹ASP.NET的內(nèi)置對象的使用、屬性、方法和工作原理。ASP.NET的內(nèi)置對象主要包括:Response、Response、Session、Cookie、Application、Server

一、Request對象

Request對象用來獲取客戶端在請求一個頁面或傳送一個Form是提供的所有信息。它包括用戶的HTTP變量、能夠識別的瀏覽器、存儲客戶端的Cookie信息和請求地址等。
Request對象是System.Web.httpRequest類的對象

1.屬性

(1) QueryString :獲取HTTP查詢字符串變量集合,主要用于收集HTTP協(xié)議中Get請求發(fā)送的數(shù)據(jù)
(2)Form :獲取窗體或頁面變量的集合,用于收集Post方法發(fā)送的請求數(shù)據(jù)
(3)ServerVarible:環(huán)境變量集合包含了服務(wù)器和客戶端的系統(tǒng)內(nèi)信息
(4)Params:它是QueryString、Form和ServerVarible這三種方式的集合,不區(qū)分是由哪種方式傳遞的參數(shù)
(5)ApplicationPath:獲取服務(wù)器上ASP.NET虛擬應(yīng)用程序的根目錄路徑
(6)ContertLength:指定客戶端發(fā)送的內(nèi)容長度
(7)Cookies:獲取客戶端發(fā)送的Cookie集合
(8)FilePath:獲取當(dāng)前請求的虛擬路徑
(9)Files:獲取采用多部分MIME格式的由客戶端上載的文件集合
(10) Item:從Cookies, From, QueryString或ServerVariables集合中獲取指定的對象
(11) Path:獲取當(dāng)前請求的虛擬路徑
(12)Url:獲取有關(guān)當(dāng)前請求的URL信息
(13)UserHostName:獲取遠(yuǎn)程客戶端的DNS名稱
(14)UserHostAddress:獲取遠(yuǎn)程客戶端的IP主機(jī)地址
(15)IsLocal:獲取一個值,該值指示該請求是否來自本地計(jì)算機(jī)
(16)Browser:獲取或設(shè)置有關(guān)正在請求的客戶端瀏覽器功能信息

2.方法

(1) BinaryRead():執(zhí)行對當(dāng)前輸入流進(jìn)行制定字節(jié)數(shù)的二進(jìn)制讀取
(2)SaveAs():將HTTP請求保存到磁盤
(3) MapPath():將指定的路徑映射到物理路徑

二、Response對象

Response對象是HttpRespone類的一個實(shí)例。該類主要是封裝來自ASP.NET操作的HTTP相應(yīng)信息。Response對象將數(shù)據(jù)作為請求的結(jié)果從服務(wù)器發(fā)送到客戶瀏覽器中,并提供有關(guān)響應(yīng)的消息。它可用來在頁面中輸出數(shù)據(jù),在頁面中跳轉(zhuǎn),還可以傳遞各個頁面的參數(shù)。

1.方法

(1)Redirect:將網(wǎng)頁重新轉(zhuǎn)到另一地址
(2)Write:寫出指定字符串。
(3)AppendHeader:
語法格式
Response.AppendHeader(Name,Value)
參數(shù)Name為HTTP頭,參數(shù)Value為HTTP頭的值。
HTTP頭是HTTP協(xié)議規(guī)定的請求和響應(yīng)消息都支持的頭域內(nèi)容。HTTP頭是頁面通過HTTP協(xié)議訪問頁面時,最先響應(yīng)的請求和響應(yīng)消息,例如HTTP頭中的Location,Location頭用于將頁面重定向到另一個頁面,與Redirect方法相似。
(3)WriteFile 將文件輸出到客戶端
(4)Flush 將緩沖區(qū)的數(shù)據(jù)輸出到客戶端瀏覽器
(5)End 停止并結(jié)束ASP網(wǎng)頁的處理
(6)Close 關(guān)閉客戶端的聯(lián)機(jī)
(7)ClearHeaders 清除緩沖區(qū)中的頁面標(biāo)題
(8)Clear 清除緩沖區(qū)的數(shù)據(jù)
(9)BinaryWrite 將二進(jìn)制字符或字符串輸出到客戶端瀏覽器
(10)AppendToLog 將自定義的數(shù)據(jù)加入到IIS日志文件中(Log File),以便追蹤與分析記錄。

2.屬性

(1)ContentType:輸出流的內(nèi)容類型比如html(text/html) 、普通文本(text/pain)還是JPEG圖片(image/JPEG)。
(2)ContentEncoding:輸出流的編碼
(3)Cookies : 返回瀏覽器的cookies的集合
(4)Buffer : 設(shè)置緩沖信息, true | false .默認(rèn)是true
(5)Expires : 獲取或設(shè)置在瀏覽器上緩存的頁過期之前的分鐘數(shù), 設(shè)置為0,則立刻過期

三、Page對象

每個aspx文件對應(yīng)的一個page對象,.aspx頁面與后臺.cs代碼類(局部類)合并生成頁面類,Page對象是頁面類的實(shí)例。所有的.aspx文件(Web窗體頁)都繼承自System.Web.UI.Page類

<%@ Page

		Language="C#" ---指明后臺使用C#語言

		AutoEventWireup="true" ---設(shè)置是否自動調(diào)用網(wǎng)頁Load事件,默認(rèn)是true

		CodeBehind="WebDemo1.aspx.cs"---其.aspx文件上綁定的后臺代碼文件

		Inherits="ASP.NETDemo.Demo1.WebDemo1" ---后臺代碼類

%>

1.屬性

(1) IsPostBack:該屬性可以檢查.aspx頁是否為傳遞回服務(wù)器的頁面,常用于判斷頁面是否為首次加載。
如果為true則為回發(fā)響應(yīng),如果為false則為首次加載
(2) IsValid:該屬性用于判斷頁面中的所有輸入的內(nèi)容是否應(yīng)經(jīng)通過驗(yàn)證,它是一個布爾值的屬性。當(dāng)需要使用服務(wù)器端驗(yàn)證時,可以使用該屬性。
(3) IsCrossPagePostBack:該屬性判斷頁面是否使用跨頁提交,它是一個布爾值的屬性。
(4) Response屬性和Request屬性上面講過了

2.事件

Page類常用的事件及執(zhí)行的先后順序:
(1) Page.PreInit 事件:在頁初始化開始時發(fā)生
(2) Page.Init 事件:當(dāng)服務(wù)器控件初始化時發(fā)生;初始化是控件生存期的第一步。 (繼承自 Control。)
(3) Page.InitComplite事件:在頁初始化完成時發(fā)生
(4) Page.PreLoad事件:在頁 Load 事件之前發(fā)生
(5) Page.Load事件:當(dāng)服務(wù)器控件加載到 Page 對象中時發(fā)生。 (繼承自 Control )
(6) Page.LoadComplete 事件:在頁生命周期的加載階段結(jié)束時發(fā)生
(7) Page.PreRender事件 :在加載 Control 對象之后、呈現(xiàn)之前發(fā)生。 (繼承自 Control。)
(8) Page.PreRenderComplete 事件:在呈現(xiàn)頁內(nèi)容之前發(fā)生

四、ViewState對象

視圖狀態(tài),在 ASP .NET 中,當(dāng)一個表單被提交時,表單會連同表單值一起出現(xiàn)在瀏覽器窗口中。如何做到的呢?這是因?yàn)?ASP .NET 維持了您的 ViewState。 ViewState 會在頁面被提交到服務(wù)器時表明它的狀態(tài)。這個狀態(tài)是通過在帶有 < form runat=“server”> 控件的每個頁面上放置一個隱藏域定義的。
這個對象是ASP.NET中特有的對象,在其他語言的后端技術(shù)中沒有這個對象

protected void Page_Load(object sender, EventArgs e)
    {
      if (!IsPostBack)//如果是第一次訪問
      {
        //先將Count的值設(shè)為0,并且保存在ViewState中
        ViewState["count"] = 0;
      }
    }
    protected void btnAdd_Click(object sender, EventArgs e)
    {
      //每次點(diǎn)擊按鈕先取出ViewState中的值并且累加之后再次賦給ViewState
      ViewState["count"] = Convert.ToInt32(ViewState["count"]) + 1;
      Literal1.Text = ViewState["count"].ToString();
    }
  }

使用ViewState實(shí)現(xiàn)頁面信息的保存

保存數(shù)據(jù)

ViewState對象存儲數(shù)據(jù)[鍵值對]Key=Value

取出數(shù)據(jù)

根據(jù)Key值取出Value值

總結(jié)

(1) ViewState中保存的數(shù)據(jù)全部被轉(zhuǎn)換成object類型,取出時務(wù)必強(qiáng)制轉(zhuǎn)換成特定類型
(2) ViewState只能在同一個頁面的連續(xù)多次請求之間保存信息,頁面跳轉(zhuǎn)后信息就會丟失

ViewState的本質(zhì)

ViewState的本質(zhì)是一個隱藏域,和原始的.aspx文件中的多出來的標(biāo)簽一樣,都是一個隱藏域,第一次創(chuàng)建ViewState對象其實(shí)是創(chuàng)建了一個隱藏域

ASP.NET內(nèi)置對象有什么用

五、Session對象

使用方式和ViewState相似
Session對象用于存儲在多個頁面調(diào)用之間特定用戶的信息。Session對象只針對單一網(wǎng)站使用者,不同的客戶端無法相互訪問。Session對象中止聯(lián)機(jī)機(jī)器離線時,也就是當(dāng)網(wǎng)站使用者關(guān)掉瀏覽器或者超過設(shè)定Session對象的有效時間,Session對象變量就會關(guān)閉。

1.Session的原理

Session是服務(wù)器將客戶端的數(shù)據(jù)代替客戶端做出對應(yīng)的保存,問題是不同用戶在選擇商品時,Session是如何區(qū)分不同用戶的選擇?
(1) 服務(wù)器根據(jù)SessionID來區(qū)分不同的用戶,它是一個很長的字符串
(2)SessionID在用戶第一次訪問時由服務(wù)器產(chǎn)生并由用戶瀏覽器保存
(3)用戶每次的操作,瀏覽器在向服務(wù)器請求時都會帶著自己的SessionID

Web服務(wù)器是如何判斷用戶是第一次請求并為其生成SessionID?
(1)用戶第一次打開瀏覽器并登陸網(wǎng)頁,瀏覽器中沒有任何SessionID。
(2)用戶把當(dāng)前網(wǎng)站的網(wǎng)頁全部關(guān)閉,再次登陸網(wǎng)頁,前面的SessionID就會丟失
(3)用戶使用不同瀏覽器登錄網(wǎng)頁,不同瀏覽器之間的Session無法共享。

ASP.NET內(nèi)置對象有什么用

2.屬性

(1) SessionID:包含的用戶會話標(biāo)識符
(2)Timeout:用戶設(shè)置用戶超時的時間,單位為分鐘

3.方法

(1) Add(string name,object value):添加“鍵-值”對
(2)Remove(string name):根據(jù)鍵刪除指定項(xiàng)
(3) Clear():從會話狀態(tài)集合中移除所有的鍵值對
(4)Abandon():結(jié)束Session,取消當(dāng)前會話

4.用途

(1)不用頁面之間需要傳遞較為復(fù)雜的數(shù)據(jù)(對象)
(2)保存用戶的登錄信息,未登錄者禁止訪問相關(guān)頁面

六、Cookie對象

Cookie對象一般用于在客戶端保存一些針對某個用戶的信息。
Cookie本質(zhì)上只是一小段文本字符串,該字符串一般保存在用戶計(jì)算機(jī)特定文件夾下的某個文件中,每個Cookie都保存到一個對應(yīng)的文件中。它提供了在客戶端存儲用戶特定信息的手段。例如保存用戶登錄某個網(wǎng)站的用戶名、保存用戶購物時選擇的某些選項(xiàng)、保存是否已經(jīng)投票以防止重復(fù)投票等。
當(dāng)用戶訪問某個服務(wù)器時,如果服務(wù)器要求將Cookie信息也傳遞過來,則瀏覽器就會將其附加到HTTP頭文件中發(fā)送給服務(wù)器。另外,服務(wù)器也可以通知瀏覽器將某個Cookie信息保存到計(jì)算機(jī)上,但是,一旦將Cookie保存在客戶端計(jì)算機(jī)上,則只有創(chuàng)建該Cookie的網(wǎng)站才能讀取它。
一般情況下,服務(wù)器都會給Cookie信息限制一個有效的時間段,當(dāng)超過保存的有效期時,瀏覽器就會自動將其刪除。如果沒有設(shè)置Cookie的有效期,實(shí)際上只是將Cookie作為用戶會話信息的一部分進(jìn)行維護(hù),當(dāng)用戶關(guān)閉瀏覽器時就會自動丟棄Cookie,而不會將其存儲在用戶的硬盤上。
不過,由于有些網(wǎng)站會利用這種技術(shù)隨意在客戶端保存訪問信息,導(dǎo)致用戶對其很反感,因此,有些用戶可能會通過瀏覽器設(shè)置禁用Cookie,所以使用這種技術(shù)時,好先檢測是否可以在客戶端存儲Cookie。

1.Cookie的特點(diǎn)

(1) 存儲少量不重要的數(shù)據(jù)
(2)存儲在客戶端的文本文件中(必須要設(shè)置有效期,否則不被存儲)
(3)安全性差
(4)存儲的數(shù)據(jù)類型-字符串
(5)瀏覽器窗口無關(guān),但是與訪問的站點(diǎn)有關(guān)
(6) 具體特定的過期時間和日期
(7) 在客戶端存儲后,將隨著瀏覽器對相關(guān)網(wǎng)站頁面請求而一并發(fā)送到服務(wù)器

2.Cookie的創(chuàng)建

Response.Cookies["User"].Value = TextBox1.Text;
HttpCookie cookie = new HttpCookie("User",TextBox1.Text);
Response.Cookies.Add(cookie);

注意:創(chuàng)建Cookie使用Response對象,讀取Cookie使用Request對象

string str=Request.Cookies["User"].Value;

3.屬性

Response.Cookie.Keys:獲取Cookie變量名或者根據(jù)其索引獲取變量值
Response.Cookies.Count:獲取Cookie變量的數(shù)量
Response.Cookies.AllKeys:將Cookies對象中所有的變量名存儲到數(shù)組中。

4.方法

Response.Cookies.Set:用于更新Cookie的變量值
Response.Cookies.Remove:用于刪除Cookie變量
Response.Cookies.Get:用Cookie變量名稱或者索引值獲取變量值。
Response.Cookies.Clear:清除Cookie內(nèi)所有的變量
Response.Cookies.Add:用于Cookie對象中添加Cookie變量。

5.Cookies工作原理圖

ASP.NET內(nèi)置對象有什么用

七、Application對象

1.作用

應(yīng)用程序級別的數(shù)據(jù)保存(類似于在CS開發(fā)中在Winform或WPF中聲明的全局變量,這個變量一般在程序開啟的時候創(chuàng)建好了,在程序使用過程中一直存在,但是會跟著不同的程序功能存儲的數(shù)據(jù)可能會發(fā)生變化)
相當(dāng)于在BS服務(wù)器中存儲的一個變量,只要服務(wù)器本次開啟那么這個數(shù)據(jù)就被創(chuàng)建存儲,只要服務(wù)器不關(guān)閉那么這個數(shù)據(jù)就一直存在,在所有客戶端訪問過程中都可以對這個對象存儲的數(shù)據(jù)進(jìn)行訪問和更改
使用方式和Session一樣采用“鍵值”對的方式

2.特征

(1)位置:服務(wù)器內(nèi)存,執(zhí)行速度快
(2)使用范圍:整個應(yīng)用程序中
(3)類型:任意類型
(4)生命周期:應(yīng)用程序開始創(chuàng)建到銷毀

3.使用場合

例如統(tǒng)計(jì)這個站點(diǎn)的訪問量,或者監(jiān)控當(dāng)前站點(diǎn)的訪問人數(shù)

4.Global.asax文件

全局應(yīng)用程序類:Global.asax,可以理解為Application對象主要在這個全局應(yīng)用程序類中使用
(1) 處理應(yīng)用程序級別的事件的可選文件
(2)必須放在應(yīng)用程序的根目錄下

常用事件說明
Application_Start接收第一個請求時觸發(fā)
Application_End應(yīng)用程序結(jié)束時觸發(fā)
Session_Start某用戶第一訪問時觸發(fā)
Session_End某用戶退出應(yīng)用程序時觸發(fā)

ASP.NET內(nèi)置對象有什么用

public class Global : System.Web.HttpApplication
  {
    //1.服務(wù)器開啟
    protected void Application_Start(object sender, EventArgs e)
    {
      Application.Lock();//鎖定訪問
      Application["Uservisit"] = 0;//網(wǎng)站的被訪問的次數(shù)
      Application["CurrentUsers"] = 0;//在線人數(shù)
      Application.UnLock();//取消鎖定
    }
    //4.客戶端首次訪問
    protected void Session_Start(object sender, EventArgs e)
    {
      Application.Lock();
      Application["Uservisit"] = (int)Application["Uservisit"] + 1;
      Application["CurrentUsers"] = (int)Application["CurrentUsers"] + 1;
      Application.UnLock();
    }
    //5.客戶端退出訪問結(jié)束會話
    protected void Session_End(object sender, EventArgs e)
    {
      //在web.config文件中把SessionState模式設(shè)置為InPro時才會已發(fā)此事件
      Application.Lock();
      Application["CurrentUsers"] = (int)Application["CurrentUsers"] - 1;
      Application.UnLock();
    }
    //2.服務(wù)器開始接收請求
    protected void Application_BeginRequest(object sender, EventArgs e)
    {
      
    }
    //3.服務(wù)器開始處理請求
    protected void Application_AuthenticateRequest(object sender, EventArgs e)
    {

    }
    //錯誤日志記錄
    protected void Application_Error(object sender, EventArgs e)
    {

    }
    
    //6.服務(wù)器結(jié)束
    protected void Application_End(object sender, EventArgs e)
    {

    }
  }

5.Application工作原理圖

ASP.NET內(nèi)置對象有什么用

八、Server對象

Server對象是HttpServerUtility的一個實(shí)例,它提供了對服務(wù)器上方法和屬性訪問,用于訪問服務(wù)器上的資源。

1.屬性

MarhineName:獲取服務(wù)器的計(jì)算機(jī)名稱
ScriptTimeout:獲取和設(shè)置請求超時值

2.方法

Execute:在當(dāng)前請求的上下文中執(zhí)行指定資源的處理程序,然后將控制返回給處理程序
HtmlDecode:對已被編碼以消除無效的HTML字符的字符串進(jìn)行解碼
HtmlEncode:對要在瀏覽器中顯示的字符進(jìn)行編碼
MapPath:返回與web服務(wù)器上的指定虛擬路徑相對應(yīng)的物理文件路徑
UrlDecode:對字符串進(jìn)行解碼,該字符串為了進(jìn)行HTTP傳輸而編碼并在URL中發(fā)送到服務(wù)器
UrlEncode:編碼字符串,以便通過URL從Web服務(wù)器到客戶端經(jīng)行可靠的HTTP傳輸
Transfer:終止當(dāng)前頁的執(zhí)行,并為當(dāng)前請求開始執(zhí)行新頁

九、ASP.NET常用對象比較

| 對象名稱 |

存儲位置有效時間信息共享范圍
Request/Response請求和響應(yīng)的過程中請求結(jié)束之前
ViewState被請求的頁面中頁面關(guān)閉之前
SessionWeb服務(wù)器端規(guī)定的時間內(nèi)
Cookie客戶端硬盤中規(guī)定的時間內(nèi)
ApplicationWeb服務(wù)器端IIS重啟之前

在VS上按F1鍵,進(jìn)入微軟官方幫助文檔,可查看其它更多內(nèi)置對象

“ASP.NET內(nèi)置對象有什么用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

本文標(biāo)題:ASP.NET內(nèi)置對象有什么用-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://www.muchs.cn/article8/dpgiip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站導(dǎo)航、標(biāo)簽優(yōu)化建站公司、網(wǎng)站建設(shè)、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化