歡迎您光臨本站 註冊首頁

不可或缺的ASP.NET內建物件小結

←手機掃碼閱讀     lousu-xi @ 2020-05-03 , reply:0

為什麼學習ASP.NET內建物件
在ASP.NET中微軟提供了多種內建物件提供開發人員使用,在實際開發中內建物件的使用不可或缺的,在Web網站的資料互動,網頁伺服器互動,網頁跳轉,伺服器資料的傳輸等其著舉足輕重的作用。在初學ASP.NET技術中也是非常重要的環節,也是更深學習ASP.NET的「里程碑」。本文章主要介紹ASP.NET的內建物件的使用、屬性、方法和工作原理。ASP.NET的內建物件主要包括: Response、 Response、 Session、 Cookie、 Application、 Server
一、Request物件
Request物件用來獲取客戶端在請求一個頁面或傳送一個Form是提供的所有資訊。它包括使用者的HTTP變數、能夠識別的瀏覽器、儲存客戶端的Cookie資訊和請求地址等。
Request物件是 System.Web.httpRequest類的物件
1.屬性
(1) QueryString :獲取HTTP查詢字串變數集合,主要用於收集HTTP協議中Get請求傳送的資料
(2)Form :獲取窗體或頁面變數的集合,用於收集Post方法傳送的請求資料
(3)ServerVarible:環境變數集合包含了伺服器和客戶端的系統內資訊
(4)Params:它是QueryString、Form和ServerVarible這三種方式的集合,不區分是由哪種方式傳遞的引數
(5)ApplicationPath:獲取伺服器上ASP.NET虛擬應用程式的根目錄路徑
(6)ContertLength:指定客戶端傳送的內容長度
(7)Cookies:獲取客戶端傳送的Cookie集合
(8)FilePath:獲取當前請求的虛擬路徑
(9)Files:獲取採用多部分MIME格式的由客戶端上載的檔案集合
(10) Item:從Cookies, From, QueryString或ServerVariables集合中獲取指定的物件
(11) Path:獲取當前請求的虛擬路徑
(12)Url:獲取有關當前請求的URL資訊
(13)UserHostName:獲取遠端客戶端的DNS名稱
(14)UserHostAddress:獲取遠端客戶端的IP主機地址
(15)IsLocal:獲取一個值,該值指示該請求是否來自本地計算機
(16)Browser:獲取或設定有關正在請求的客戶端瀏覽器功能資訊
2.方法
(1) BinaryRead():執行對當前輸入流進行制定位元組數的二進位制讀取
(2)SaveAs():將HTTP請求儲存到磁碟
(3) MapPath():將指定的路徑對映到物理路徑
二、Response物件
Response物件是HttpRespone類的一個例項。該類主要是封裝來自ASP.NET操作的HTTP相應資訊。Response物件將資料作為請求的結果從伺服器傳送到客戶瀏覽器中,並提供有關響應的訊息。它可用來在頁面中輸出資料,在頁面中跳轉,還可以傳遞各個頁面的引數。
1.方法
(1) Redirect:將網頁重新轉到另一地址
(2) Write:寫出指定字串。
(3) AppendHeader:
語法格式
Response.AppendHeader(Name,Value)
引數Name為HTTP頭,引數Value為HTTP頭的值。
HTTP頭是HTTP協議規定的請求和響應訊息都支援的頭域內容。HTTP頭是頁面透過HTTP協議訪問頁面時,最先響應的請求和響應訊息,例如HTTP頭中的Location,Location頭用於將頁面重定向到另一個頁面,與Redirect方法相似。
(3)WriteFile 將檔案輸出到客戶端
(4)Flush 將緩衝區的資料輸出到客戶端瀏覽器
(5)End 停止並結束ASP網頁的處理
(6)Close 關閉客戶端的聯機
(7)ClearHeaders 清除緩衝區中的頁面標題
(8)Clear 清除緩衝區的資料
(9)BinaryWrite 將二進位制字元或字串輸出到客戶端瀏覽器
(10)AppendToLog 將自定義的資料加入到IIS日誌檔案中(Log File),以便追蹤與分析記錄。
2.屬性
(1)ContentType:輸出流的內容型別比如html(text/html) 、普通文字(text/pain)還是JPEG圖片(image/JPEG)。
(2)ContentEncoding:輸出流的編碼
(3)Cookies : 返回瀏覽器的cookies的集合
(4)Buffer : 設定緩衝資訊, true | false .預設是true
(5)Expires : 獲取或設定在瀏覽器上快取的頁過期之前的分鐘數, 設定為0,則立刻過期
三、Page物件
每個aspx檔案對應的一個page物件,.aspx頁面與後臺.cs程式碼類(區域性類)合併生成頁面類,Page物件是頁面類的例項。所有的.aspx檔案(Web窗體頁)都繼承自 System.Web.UI.Page類
<%@ page="" language="C#" autoeventwireup="true" true="" codebehind="WebDemo1.aspx.cs" inherits="ASP.NETDemo.Demo1.WebDemo1">
1.屬性
(1) IsPostBack:該屬性可以檢查.aspx頁是否為傳遞迴伺服器的頁面,常用於判斷頁面是否為首次載入。
如果為true則為回發響應,如果為false則為首次載入
(2) IsValid:該屬性用於判斷頁面中的所有輸入的內容是否應經透過驗證,它是一個布林值的屬性。當需要使用伺服器端驗證時,可以使用該屬性。
(3) IsCrossPagePostBack:該屬性判斷頁面是否使用跨頁提交,它是一個布林值的屬性。
(4) Response屬性和Request屬性上面講過了
2.事件
Page類常用的事件及執行的 先後順序:
(1) Page.PreInit 事件:在頁初始化開始時發生
(2) Page.Init 事件:當伺服器控制元件初始化時發生;初始化是控制元件生存期的第一步。 (繼承自 Control。)
(3) Page.InitComplite事件:在頁初始化完成時發生
(4) Page.PreLoad事件:在頁 Load 事件之前發生
(5) Page.Load事件:當伺服器控制元件載入到 Page 物件中時發生。 (繼承自 Control )
(6) Page.LoadComplete 事件:在頁生命週期的載入階段結束時發生
(7) Page.PreRender事件 :在載入 Control 物件之後、呈現之前發生。 (繼承自 Control。)
(8) Page.PreRenderComplete 事件:在呈現頁內容之前發生
四、ViewState物件
檢視狀態,在 ASP .NET 中,當一個表單被提交時,表單會連同表單值一起出現在瀏覽器視窗中。如何做到的呢?這是因為 ASP .NET 維持了您的 ViewState。 ViewState 會在頁面被提交到伺服器時表明它的狀態。這個狀態是透過在帶有 < form runat=「server」> 控制元件的每個頁面上放置一個隱藏域定義的。
這個物件是 ASP.NET中特有的物件,在其他語言的後端技術中沒有這個物件
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack)//如果是第一次訪問 { //先將Count的值設為0,並且儲存在ViewState中 ViewState["count"] = 0; } } protected void btnAdd_Click(object sender, EventArgs e) { //每次點選按鈕先取出ViewState中的值並且累加之後再次賦給ViewState ViewState["count"] = Convert.ToInt32(ViewState["count"]) + 1; Literal1.Text = ViewState["count"].ToString(); } }
使用 ViewState實現頁面資訊的儲存
儲存資料
ViewState物件儲存資料[鍵值對]Key=Value
取出資料
根據Key值取出Value值
總結
(1) ViewState中儲存的資料全部被轉換成object型別,取出時務必強制轉換成特定型別
(2) ViewState只能在同一個頁面的連續多次請求之間儲存資訊,頁面跳轉後資訊就會丟失
ViewState的本質
ViewState的本質是一個隱藏域,和原始的.aspx檔案中的多出來的標籤一樣,都是一個隱藏域,第一次建立ViewState物件其實是建立了一個隱藏域
五、Session物件
使用方式和ViewState相似
Session物件用於儲存在多個頁面呼叫之間特定使用者的資訊。Session物件只針對單一網站使用者,不同的客戶端無法相互訪問。Session物件中止聯機機器離線時,也就是當網站使用者關掉瀏覽器或者超過設定Session物件的有效時間,Session物件變數就會關閉。
1.Session的原理
Session是伺服器將客戶端的資料代替客戶端做出對應的儲存,問題是不同使用者在選擇商品時,Session是如何區分不同使用者的選擇?
(1) 伺服器根據SessionID來區分不同的使用者,它是一個很長的字串
(2)SessionID在使用者第一次訪問時由伺服器產生並由使用者瀏覽器儲存
(3)使用者每次的操作,瀏覽器在向伺服器請求時都會帶著自己的SessionID
Web伺服器是如何判斷使用者是第一次請求併為其生成SessionID?
(1)使用者第一次開啟瀏覽器並登陸網頁,瀏覽器中沒有任何SessionID。
(2)使用者把當前網站的網頁全部關閉,再次登陸網頁,前面的SessionID就會丟失
(3)使用者使用不同瀏覽器登入網頁,不同瀏覽器之間的Session無法共享。
2.屬性
(1) SessionID:包含唯一的使用者會話識別符號
(2)Timeout:使用者設定使用者超時的時間,單位為分鐘
3.方法
(1) Add(string name,object value):新增「鍵-值」對
(2)Remove(string name):根據鍵刪除指定項
(3) Clear():從會話狀態集合中移除所有的鍵值對
(4)Abandon():結束Session,取消當前會話
4.用途
(1)不用頁面之間需要傳遞較為複雜的資料(物件)
(2)儲存使用者的登入資訊,未登入者禁止訪問相關頁面
六、Cookie物件
Cookie物件一般用於在客戶端儲存一些針對某個使用者的資訊。
Cookie本質上只是一小段文字字串,該字串一般儲存在使用者計算機特定資料夾下的某個檔案中,每個Cookie都儲存到一個對應的檔案中。它提供了在客戶端儲存使用者特定資訊的手段。例如儲存使用者登入某個網站的使用者名稱、儲存使用者購物時選擇的某些選項、儲存是否已經投票以防止重複投票等。
當使用者訪問某個伺服器時,如果伺服器要求將Cookie資訊也傳遞過來,則瀏覽器就會將其附加到HTTP標頭檔案中傳送給伺服器。另外,伺服器也可以通知瀏覽器將某個Cookie資訊儲存到計算機上,但是,一旦將Cookie儲存在客戶端計算機上,則只有建立該Cookie的網站才能讀取它。
一般情況下,伺服器都會給Cookie資訊限制一個有效的時間段,當超過儲存的有效期時,瀏覽器就會自動將其刪除。如果沒有設定Cookie的有效期,實際上只是將Cookie作為使用者會話資訊的一部分進行維護,當使用者關閉瀏覽器時就會自動丟棄Cookie,而不會將其儲存在使用者的硬碟上。
不過,由於有些網站會利用這種技術隨意在客戶端儲存訪問資訊,導致用戶對其很反感,因此,有些使用者可能會透過瀏覽器設定禁用Cookie,所以使用這種技術時,最好先檢測是否可以在客戶端儲存Cookie。
1.Cookie的特點
(1) 儲存少量不重要的資料
(2)儲存在客戶端的文字檔案中(必須要設定有效期,否則不被儲存)
(3)安全性差
(4)儲存的資料型別-字串
(5)瀏覽器視窗無關,但是與訪問的站點有關
(6) 具體特定的過期時間和日期
(7) 在客戶端儲存後,將隨著瀏覽器對相關網站頁面請求而一併傳送到伺服器
2.Cookie的建立
Response.Cookies["User"].Value = TextBox1.Text;
HttpCookie cookie = new HttpCookie("User",TextBox1.Text); Response.Cookies.Add(cookie);
注意:建立Cookie使用Response物件,讀取Cookie使用Request物件
string str=Request.Cookies["User"].Value;
3.屬性
Response.Cookie.Keys:獲取Cookie變數名或者根據其索引獲取變數值
Response.Cookies.Count:獲取Cookie變數的數量
Response.Cookies.AllKeys:將Cookies物件中所有的變數名儲存到陣列中。
4.方法
Response.Cookies.Set:用於更新Cookie的變數值
Response.Cookies.Remove:用於刪除Cookie變數
Response.Cookies.Get:用Cookie變數名稱或者索引值獲取變數值。
Response.Cookies.Clear:清除Cookie內所有的變數
Response.Cookies.Add:用於Cookie物件中新增Cookie變數。
5.Cookies工作原理圖
七、Application物件
1.作用
應用程式級別的資料儲存(類似於在CS開發中在Winform或WPF中宣告的全域性變數,這個變數一般在程式開啟的時候建立好了,在程式使用過程中一直存在,但是會跟著不同的程式功能儲存的資料可能會發生變化)
相當於在BS伺服器中儲存的一個變數,只要伺服器本次開啟那麼這個資料就被建立儲存,只要伺服器不關閉那麼這個資料就一直存在,在所有客戶端訪問過程中都可以對這個物件儲存的資料進行訪問和更改
使用方式和Session一樣採用 「鍵值」對 的方式
2.特徵
(1)位置:伺服器記憶體,執行速度快
(2)使用範圍:整個應用程式中
(3)型別:任意型別
(4)生命週期:應用程式開始建立到銷燬
3.使用場合
例如統計這個站點的訪問量,或者監控當前站點的訪問人數
4.Global.asax檔案
全域性應用程式類:Global.asax,可以理解為Application物件主要在這個全域性應用程式類中使用
(1) 處理應用程式級別的事件的可選檔案
(2)必須放在應用程式的根目錄下
常用事件 說明 Application_Start 接收第一個請求時觸發 Application_End 應用程式結束時觸發 Session_Start 某使用者第一訪問時觸發 Session_End 某使用者退出應用程式時觸發
public class Global : System.Web.HttpApplication { //1.伺服器開啟 protected void Application_Start(object sender, EventArgs e) { Application.Lock();//鎖定訪問 Application["Uservisit"] = 0;//網站的被訪問的次數 Application["CurrentUsers"] = 0;//線上人數 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.客戶端退出訪問結束會話 protected void Session_End(object sender, EventArgs e) { //在web.config檔案中把SessionState模式設定為InPro時才會已發此事件 Application.Lock(); Application["CurrentUsers"] = (int)Application["CurrentUsers"] - 1; Application.UnLock(); } //2.伺服器開始接收請求 protected void Application_BeginRequest(object sender, EventArgs e) { } //3.伺服器開始處理請求 protected void Application_AuthenticateRequest(object sender, EventArgs e) { } //錯誤日誌記錄 protected void Application_Error(object sender, EventArgs e) { } //6.伺服器結束 protected void Application_End(object sender, EventArgs e) { } }
5.Application工作原理圖
八、Server物件
Server物件是HttpServerUtility的一個例項,它提供了對伺服器上方法和屬性訪問,用於訪問伺服器上的資源。
1.屬性
MarhineName:獲取伺服器的計算機名稱
ScriptTimeout:獲取和設定請求超時值
2.方法
Execute:在當前請求的上下文中執行指定資源的處理程式,然後將控制返回給處理程式
HtmlDecode:對已被編碼以消除無效的HTML字元的字串進行解碼
HtmlEncode:對要在瀏覽器中顯示的字元進行編碼
MapPath:返回與web伺服器上的指定虛擬路徑相對應的物理檔案路徑
UrlDecode:對字串進行解碼,該字串為了進行HTTP傳輸而編碼並在URL中傳送到伺服器
UrlEncode:編碼字串,以便透過URL從Web伺服器到客戶端經行可靠的HTTP傳輸
Transfer:終止當前頁的執行,併為當前請求開始執行新頁
九、ASP.NET常用物件比較
| 物件名稱 |
儲存位置 有效時間 資訊共享範圍 Request/Response 請求和響應的過程中 請求結束之前 ViewState 被請求的頁面中 頁面關閉之前 Session Web伺服器端 規定的時間內 Cookie 客戶端硬碟中 規定的時間內 Application Web伺服器端 IIS重啟之前
在VS上按 F1 鍵,進入微軟官方幫助文件,可檢視其它更多內建物件


[lousu-xi ] 不可或缺的ASP.NET內建物件小結已經有190次圍觀

http://coctec.com/docs/program/show-post-232653.html