ASP.NET之HTTP屬性、方法講解

Request對象

Request對象是HttpRequest類的一個實例,它提供對當前頁請求的訪問,其中包括標題、Cookie、客戶端證書、查詢字符串等,用戶可以使用該類來讀取瀏覽器已經發送的內容。

集合 描述
ClientCertificate 包含了存儲在客戶證書中的所有的字段值。
Cookies 包含了 HTTP 請求中發送的所有的 cookie 值。
Form 包含了使用 post 方法由表單發送的所有的表單(輸入)值。
QueryString 包含了 HTTP 查詢字符串中所有的變量值。
ServerVariables 包含了所有的服務器變量值。

集合意味着Request對象裏還有對象,這些對象裏又有各自屬性、方法,如取值Request.Cookies(“firstname”) 。

屬性 描述
TotalBytes 返回在請求正文中客戶端發送的字節總數。

屬性意味着只能Request.TotalBytes

方法 描述
BinaryRead 取回作爲 post 請求的一部分而從客戶端發送至服務器的數據,並把它存儲在一個安全的數組中。
int a=Request.TotalBytes
int b=Request.BinaryRead(a)

常用實例

HTML 表單實例:

    <form id="form1" runat="server" method="post">
        <asp:HiddenField ID="HiddenField1" runat="server" />
        <asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox><br />
        <asp:TextBox ID="TextBox2" runat="server" ></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Aclick"/>
    </form>

GET請求:

  • Request.QueryString 命令用於收集使用 method=“get” 的表單中的值。
  • 使用 GET 方法從表單傳送的信息對所有的用戶都是可見的(出現在瀏覽器的地址欄),並且對所發送信息的量也有限制。

如果用戶在上面的 HTML 表單中輸入 “admin” 和 “123456”,發送至服務器的 URL 會類似這樣:

http://localhost?username=admin&password=123456

C#後端接收:

string username = Request.QueryString["username"];
string password = Request.QueryString["password"];

POST 請求:

  • Request.Form 命令用於收集使用 method=“post” 的表單中的值。
  • 使用 POST 方法從表單傳送的信息對用戶是不可見的,並且對所發送信息的量沒有限制。

如果用戶在上面的 HTML 表單中輸入 “Bill” 和 “Gates”,發送至服務器的 URL 會類似這樣:

http://localhost

C#後端接收:

string username = Request.Form["username"];
string password = Request.Form["password"];

Response對象

ASP Response 對象用於從服務器向用戶發送輸出的結果。它的集合、屬性和方法描述如下:

集合 描述
Cookies 設置 cookie 的值。如果 cookie 不存在,則創建 cookie ,並設置指定的值。
屬性 描述
Buffer 規定是否緩衝頁面的輸出。
CacheControl 設置代理服務器是否可以緩存由 ASP 產生的輸出。
Charset 將字符集的名稱追加到 Response 對象中的 content-type 報頭。
ContentType 設置 Response 對象的 HTTP 內容類型。
Expires 設置頁面在失效前的瀏覽器緩存時間(分鐘)。
ExpiresAbsolute 設置瀏覽器上頁面緩存失效的日期和時間。
IsClientConnected 指示客戶端是否已從服務器斷開。
Pics 向 response 報頭的 PICS 標籤追加值。
Status 規定由服務器返回的狀態行的值。
方法 描述
AddHeader 向 HTTP 響應添加新的 HTTP 報頭和值。
AppendToLog 向服務器日誌條目的末端添加字符串。
BinaryWrite 在沒有任何字符轉換的情況下直接向輸出寫數據。
Clear 清除已緩衝的 HTML 輸出。
End 停止處理腳本,並返回當前的結果。
Flush 立即發送已緩衝的 HTML 輸出。
Redirect 把用戶重定向到一個不同的 URL。
Write 向輸出寫指定的字符串。

常用實例

重定向 URL。

Response.Redirect("http://localhost/2")

修改由服務器返回的狀態行。

response.Status="404"

設置 HTTP 內容類型。

response.ContentType="text/HTML"

輸出文字

Response.Write("Hello World");

輸出文件流

Response.WriteFile("text.txt");

Server對象

Server對象定義了一個與Web服務器相關的類,提供對服務器上的方法和屬性的訪問,用於訪問服務器上的資源。

屬性 描述
ScriptTimeout 設置或返回在一段腳本終止前它所能運行時間(秒)的最大值。
方法 描述
CreateObject 創建對象的實例。
Execute 從另一個 ASP 文件中執行一個 ASP 文件。
GetLastError() 返回可描述已發生錯誤狀態的 ASPError 對象。
HTMLEncode 把 HTML 編碼應用到某個指定的字符串。
MapPath 把一個指定的路徑映射到一個物理路徑。
Transfer 把一個 ASP 文件中創建的所有信息發送(傳輸)到另一個 ASP 文件。
URLEncode 把 URL 編碼規則應用到指定的字符串。

常用實例

//輸出瀏覽器信息
Response.Write(Request.ServerVariables["http_user_agent"] + "<br>");
Response.Write(Request.ServerVariables["remote_addr"] + "<br>");
Response.Write(Request.ServerVariables["remote_host"] + "<br>");
Response.Write(Request.ServerVariables["request_method"] + "<br>");
Response.Write(Request.ServerVariables["server_name"] + "<br>");
Response.Write(Request.ServerVariables["server_port"] + "<br>");
Response.Write(Request.ServerVariables["server_software"] + "<br>");
//輸出文字
Response.Write("Hello World");
//輸出文件流
Response.WriteFile("text.txt");
//MapPath 獲取服務器的物理地址
Response.Write(Server.MapPath("index.aspx"));
//對字符串編碼
Response.Write(Server.UrlEncode("https://www.runoob.com/asp/met-urlencode.html"));
//對字符串解碼
Response.Write(Server.UrlDecode("https%3a%2f%2fwww.runoob.com%2fasp%2fmet-urlencode.html"));
//對一段指定的字符串應用 HTML 編碼
Response.Write(Server.HtmlEncode("<img>"));
//對HTML進行解碼
Response.Write(Server.HtmlDecode("&lt;img&gt; <img>"));

狀態管理

狀態管理表示進行對存儲結構的操作。其實就是把Response對象抽離出來講解。這裏我們綜合例子來講。

Cookies

//設置Cookies
Response.Cookies["firstname"].Value = "Alex";
//一小時過期
Response.Cookies["firstname"].Expires = DateTime.Now.AddHours(1);//一小時
//取值
Request.Cookies["firstname"]
  • 這裏的Cookies(“firstname”)括號內的參數就是設置cookie 的名稱。
  • 等於後面表示要對Cookies(“firstname”)進行對賦值操作,cookie 的值。
  • expires是設置cookie 的失效日期。如果沒有規定日期,cookie 會在 session 結束時失效。

Session

Cookies與Session的區別在於前者永久保留數據在瀏覽器裏,除非過期時間到,後者關掉瀏覽器即消失。

//設置值
Session["name"]="Hege"
//獲取值
Session["name"]
//設置5分鐘過期
Session.Timeout=5
//獲取全部值、Contents集合
Session.Contents("name")
Session.Contents(i)
//獲取Session.Contents個數
Session.Contents.Count
//立即結束
Session.Abandon
//刪除
Session.Contents.Remove["test2"]

Application

Application 對象用於存儲和訪問來自任何頁面的變量,類似於 Session 對象。不同之處在於,所有的用戶分享一個 Application 對象,而 Session 對象和用戶的關係是一一對應的。

Application 對象存有會被應用程序中的許多頁面使用的信息(比如數據庫連接信息)。可以從任何的頁面訪問這些信息。同時您也可以在一個地方改變這些信息,隨後這些改變會自動反映在所有的頁面上。

下面我們來做一個統計網站的訪問量測試。

首先創建全局應用程序類文件,Global.asax文件。

先在Application_Start初始化變量:

Application["count"] = 0;

然後在新會話啓動時Session_Start進行以下代碼:

Application.Lock();
Application['count'] = (int)Application['count'] + 1;
Application.UnLock();

然後在新會話結束後Session_End進行以下代碼:

Application.Lock();
Application['count'] = (int)Application['count'] - 1;
Application.UnLock();

然後在一個aspx文件的後端cs文件中輸入統計代碼:

Label1.Text = "您是網站的第" + Application["count"] + "位用戶";

ViewState

在經典 ASP 中,當一個表單被提交時,所有的表單值都會被清空。假設您提交了一個帶有大量信息的表單,而服務器返回了一個錯誤。您不得不回到表單改正信息。您點擊返回按鈕,然後發生了什麼…所有表單值都被清空了,您不得不重新開始所有的一切!站點沒有維持您的 ViewState。

在 ASP .NET 中,當一個表單被提交時,表單會連同表單值一起出現在瀏覽器窗口中。

維持 ViewState 是 ASP.NET Web Forms 的默認設置。EnableViewState屬性。

禁用:

<asp:TextBox ID="TextBox1" runat="server" EnableViewState="false"></asp:TextBox>

HiddenField

增加HiddenField,其實是爲了讓整個狀態管理機制的應用程度更加全方面。因爲不管是ViewState、Cookie還是Session,都有其失效的時候,比如用戶因某種需求設置ViewState爲false,或環境條件限制使用Cookie,或用戶長時間沒有動作導致Session過期等等,那這個時候HiddenField無疑是最佳選擇。

HiddenField控件的作用簡單的說是用於存儲需要在向服務器的發送間保持的值。他作爲<input type= "hidden"/>元素呈現 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章