Asp.net內(nèi)置對象之Request對象怎么用

這篇文章將為大家詳細(xì)講解有關(guān)Asp.net內(nèi)置對象之Request對象怎么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)是專業(yè)的蘇仙網(wǎng)站建設(shè)公司,蘇仙接單;提供做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行蘇仙網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

Request對象主要用于獲取來自客戶端的數(shù)據(jù),如用戶填入表單的數(shù)據(jù)、保存在客戶端的Cookie等,本文將圍繞Request對象,講解其的主要作用:讀取窗體變量、讀取查詢字符串變量、取得Web服務(wù)器端的系統(tǒng)信息。取得客戶端瀏覽器信息等等,感興趣的朋友可以了解下

前言:
Request對象主要用于獲取來自客戶端的數(shù)據(jù),如用戶填入表單的數(shù)據(jù)、保存在客戶端的Cookie等。

一、Request對象概述

1、主要屬性

ApplicationPath獲取服務(wù)器上asp.net應(yīng)用程序的虛擬應(yīng)用程序根路徑
Browser獲取有關(guān)正在請求的客戶端的瀏覽器功能的信息,該屬性值為:HttpBrowserCapabilities對  象
ContentEncoding獲取或設(shè)置實(shí)體主體的字符集。該屬性值為表示客戶端的字符集Encoding對象
ContentLength指定客戶端發(fā)送的內(nèi)容長度,以字節(jié)為單位
ContentType獲取或設(shè)置傳入請求的MIME內(nèi)容類型。
Cookies獲取客戶端發(fā)送的Cookie集合,該屬性值為表示客戶端的Cookie變量的  HttpCookieCollection對象
CurrentExecutionFilePath獲取當(dāng)前請求的虛擬路徑
FilePath獲取當(dāng)前請求的虛擬路徑
Files獲取客戶端上載的文件集合。該屬性值為HttpFileCollection對象,表示客戶端上載的文件集合
Form獲取窗體變量集合
HttpMethod獲取客戶端使用的HTTP數(shù)據(jù)傳輸方法(如:get、post或head)
Item獲取Cookies、Form、QueryString或ServerVariables集合中指定的對象
Params獲取Cookies、Form、QueryString或ServerVariables項(xiàng)的組合集合
Path獲取當(dāng)前請求的虛擬路徑
PathInfo獲取具有URL擴(kuò)展名的資源的附加路徑信息
PhysicalApplicationPath獲取當(dāng)前正在執(zhí)行的服務(wù)器應(yīng)用程序的根目錄的物理文件系統(tǒng)路徑
PhysicalPath獲取與請求的URL相對應(yīng)的物理文件路徑
QueryString獲取HTTP查詢字符串變量集合。該屬性值為:NameValueCollection對象,它包含由客戶端發(fā)送的查詢字符串變量集合
RequestType獲取或設(shè)置客戶端使用HTTP數(shù)據(jù)傳輸?shù)姆绞?get或post)
ServerVariables獲取Web服務(wù)器變量的集合
TotalBytes獲取當(dāng)前輸入流的字節(jié)數(shù)
Url獲取有關(guān)當(dāng)前請求URL的信息
UserHostAddress獲取遠(yuǎn)程客戶端的IP主機(jī)地址


2、主要方法

(1)MapPath(VirtualPath):將當(dāng)前請求的URL中的虛擬路徑virtualPath映射到服務(wù)器上的物理路徑。參數(shù)virtualPath指定當(dāng)前請求的虛擬路徑,可以是絕對路徑或相對路徑。該方法的返回值為由virtualPath指定的服務(wù)器物理路徑。

(2)SaveAs (Filename,includeHeaders):將http請求保存到磁盤。參數(shù)filename指定物理驅(qū)動(dòng)器路徑,includeHeaders是一個(gè)布爾值,指定是否應(yīng)將HTTP標(biāo)頭保存到磁盤。

二、Request對象的應(yīng)用

1.讀取窗體變量四種方式

(1).使用Request.Form屬性讀取窗體變量
(2).使用Request.QueryString屬性讀取窗體變量
(3).使用Request.Params屬性讀取窗體變量
(4).通過服務(wù)器控件的屬性直接讀取窗體變量

(1).使用Request.Form屬性讀取窗體變量

HtmlForm控件的Method屬性的默認(rèn)值為post。在這種情況下,當(dāng)用戶提交網(wǎng)頁時(shí),表單數(shù)據(jù)將以HTTP標(biāo)頭的形式發(fā)送到服務(wù)器端。此時(shí),可以使用Request對象的Form屬性來讀取窗體變量。如:txtUserName和txtPassword的文本框控件,則可以通過以下形式來讀取它們的值: Request.Form["txtUserName"] ;Request.Form["txtPassword"]

(2)使用Request.QueryString屬性讀取窗體變量

如果將HtmlForm控件的Method屬性設(shè)置為get,則當(dāng)用戶提交網(wǎng)頁時(shí),表單數(shù)據(jù)將附加在網(wǎng)址后面發(fā)送到服務(wù)器端。在這種情況下,可以使用Request對象的QueryString屬性讀取窗體變量。Request.QueryString["txtUserName"] ;Request.QueryString["txtPassword"]

(3)使用Request.Params屬性讀取窗體變量

不論HtmlForm控件的Method屬性取什么值,都可以使用Request對象的Params屬性來讀取窗體變量的內(nèi)容,如Request.Params["txtPassword"]或者Request.["txtPassword"],優(yōu)先獲取GET方式提交的數(shù)據(jù),它會(huì)在QueryString、Form、ServerVariable中都按先后順序搜尋一遍。

Request:包含以上兩種方式(優(yōu)先獲取GET方式提交的數(shù)據(jù)),它會(huì)在QueryString、Form、ServerVariable中都按先后順序搜尋一遍。Request.Params是所有post和get傳過來的值的集合,request.params其實(shí)是一個(gè)集合,它依次包括request.QueryString、request.Form、request.cookies和request.ServerVariable。

注意:當(dāng)使用Request.Params的時(shí)候,這些集合項(xiàng)中最好不要有同名項(xiàng)。如果僅僅是需要Form中的一個(gè)數(shù)據(jù),但卻使用了Request而不是Request.Form,那么程序?qū)⒃赒ueryString、ServerVariable中也搜尋一遍。如果正好QueryString或者ServerVariable里面也有同名的項(xiàng),那么得到的就不是想要的值了。

(4)通過服務(wù)器控件的屬性直接讀取窗體變量

除了以上3種方式之外,也可以通過服務(wù)器控件的屬性來直接讀取窗體變量,這是獲取表單數(shù)據(jù)的最常用、最簡單的方式。例如: txtUserName.Text

2.讀取查詢字符串變量

在瀏覽網(wǎng)頁時(shí),經(jīng)??吹綖g覽器地址欄中顯示“xxx.aspx?id=8018”之類的URL,其中xxx.aspx表示要訪問的.aspx網(wǎng)頁,問號(?)后面跟的內(nèi)容便是查詢字符串,其作用是將變量的名稱和值傳送給這個(gè)ASP.NET文件來處理。查詢字符串變量可以通過以下幾種方式生成。

(1).若將HtmlForm控件的Method屬性設(shè)置為get,則當(dāng)用戶提交網(wǎng)頁時(shí),窗體數(shù)據(jù)將作為查詢字符串變量附在網(wǎng)址后面被發(fā)送到服務(wù)器端。
(2).使用<a>…</a>標(biāo)記或HyperLink控件創(chuàng)建超文本鏈接時(shí),可以將查詢字符串放在目標(biāo)URL后面,并使用問號“?”來分隔URL與查詢字符串
(3).調(diào)用Response.Redirect方法時(shí),若在網(wǎng)址參數(shù)后面附有變量名/值對,則打開目標(biāo)網(wǎng)頁時(shí)這些變量值附在該網(wǎng)址后面被發(fā)送到服務(wù)器端。
(4).在瀏覽器地址欄中輸入請求URL時(shí),在URL后輸入問號“?”和查詢字符串。例如: http://…/t.aspx?Id=8018

在上述場合,均可通過Request.QueryString屬性來檢索查詢字符串變量。

如下代碼:

//在登陸頁面 protected void Button1_Click(object sender, EventArgs e) { //登陸 //if (txtUserName.Text == "admin" && txtPwd.Text == "123") //{ // Session["Info"] = "隨便一個(gè)值"; // Response.Redirect("Request2_test.aspx?Info=" + txtUserName.Text); //} //else //{ // Response.Redirect("Request2_test.aspx?error=登陸失??!"); //} /***********************************方法2****************************************/ //或者 if (txtUserName.Text == "admin" && txtPwd.Text == "123") { Response.Redirect("Request2_test.aspx?Info=" + txtUserName.Text + "&check=1"); } else { Response.Redirect("Request2_test.aspx?error=登陸失?。?quot;); } }

在驗(yàn)證頁面

代碼如下:

protected void Page_Load(object sender, EventArgs e) 
{ 
//驗(yàn)證頁面 
//if (Session["Info"] != 
null
 && Session["Info"].ToString() == "隨便一個(gè)值") 
//{ 
// Response.Write("登陸成功!<br>" + Request.QueryString["Info"] + ",歡迎訪問本站"); 
// //Response.Write("登陸成功!<br>" + Request["Info"] + ",歡迎訪問本站"); 
// //Response.Write("登錄成功!<br>"+Request.Form["username"]+",歡迎訪問本站"); 
//} 
//else 
//{ 
// Response.Write("登陸失敗"); 
//} 
/***************************************方法2**********************************/ 
if (Convert.ToInt32(Request["check"]) == 1) 
{ 
Response.Write("登陸成功!<br>" + Request.QueryString["Info"] + ",歡迎訪問本站"); 
} 
else 
{ 
Response.Write("登陸失敗"); 
} 
}

3.取得Web服務(wù)器端的系統(tǒng)信息

Request對象使用ServerVariables集合對象保存服務(wù)器端系統(tǒng)信息,這些信息變量包含在HTTP頭部中隨HTTP請求一起傳送。使用Request對象的ServerVariables集合對象取得環(huán)境變量的語法如下: Request.ServerVariables[環(huán)境變量名]

ServerVariables集合對象中保存的常用信息變量如下:
Asp.net內(nèi)置對象之Request對象怎么用

代碼如下:

Response.Write(Request.ServerVariables["LOCAL_ADDR"]);//遠(yuǎn)端服務(wù)器的地址 Response.Write("<br>"); Response.Write(Request.ServerVariables["Remote_ADDR"]);//瀏覽器所在主機(jī)的IP地址 Response.Write("<br>"); Response.Write(Request.Browser.Type.ToString());//瀏覽器的類型 Response.Write("<br>"); Response.Write(Request.Browser.Platform.ToString());//瀏覽器所在的平臺 Response.Write("<br>"); Response.Write(Request.ServerVariables["url"]);

4.取得客戶端瀏覽器信息

通過Request對象的Browser屬性得到。需要利用Browser屬性生成一個(gè)HttpBrowserCapabilities類型的對象實(shí)例。HttpBrowserCapabilities類具有的常用屬性如下:
Asp.net內(nèi)置對象之Request對象怎么用

代碼如下:

Response.Write("瀏覽器的類型是:" + Request.Browser.Browser.ToString()+"<br>"); Response.Write("瀏覽器的版本是:" + Request.Browser.Version.ToString()+"<br>"); Response.Write("瀏覽器的所在平臺是:" + Request.Browser.Platform.ToString()+"<br>"); Response.Write("瀏覽器是否支持框架:" + Request.Browser.Frames.ToString()+"<br>"); Response.Write("瀏覽器是否支持Cookies:" + Request.Browser.Cookies.ToString()+"<br>"); Response.Write("瀏覽器是否支持Javascript:" + Request.Browser.JavaScript.ToString()+"<br>");

5.讀取客戶端Cookie

Cookie是在HTTP協(xié)議下服務(wù)器或腳本可以維護(hù)客戶工作站上信息的一種方式。Cookie是由Web服務(wù)器保存在用戶瀏覽器上的小文本文件,它可以包含有關(guān)用戶的信息,這些信息以名/值對的形式儲(chǔ)存在文本文件中。無論何時(shí),只要用戶連接接到服務(wù)器,Web站點(diǎn)就可以訪問Cookie信息。Cookie保存在用戶的Cookie文件中,當(dāng)下一次用戶返回時(shí),仍然可以對它進(jìn)行調(diào)用。

Cookies集合是由一些Cookie對象組成的。Cookie對象的類名為HttpCookie。HttpCookie類的主要屬性如下:
Asp.net內(nèi)置對象之Request對象怎么用

使用Cookie時(shí),應(yīng)注意以下幾點(diǎn)

[1].使用Cookie保存客戶端瀏覽器請求服務(wù)器頁面的請求信息時(shí),保存時(shí)間的長短取決于Cookie對象的Expires屬性,可以根據(jù)需要來設(shè)置。若未設(shè)置Cookie的失效日期,則它們僅保存到關(guān)閉瀏覽器為止。若將Cookie對象的Expires屬性設(shè)置為DateTime.MaxValue,則表示Cookie永遠(yuǎn)不會(huì)過期。

[2].Cookie存儲(chǔ)的數(shù)據(jù)量有所限制,大多數(shù)瀏覽器支持的最大容量為4096字節(jié),因此不要用Cookie來保存大量數(shù)據(jù)。

[3].  并非所有瀏覽器都支持Cookie,并且數(shù)據(jù)是以明文形式保存在客戶端計(jì)算機(jī)中,因此最好不要用Cookie來保存敏感的未加密數(shù)據(jù)。

[4].在ASP.NET中有兩個(gè)Cookies集合,即:Response對象的Cookies集合和Request對象的Cookies集合,但兩者的作用有所不同,通過前者可以將Cookie寫入客戶端,通過后者可以讀取存儲(chǔ)在客戶端的Cookie。

如下操作:

Asp.net內(nèi)置對象之Request對象怎么用

示例如下:

代碼如下:

protected void Page_Load(object sender, EventArgs e) 
{ 
HttpCookie c1=Request.Cookies["UserName"]; 
HttpCookie c2 = Request.Cookies["Password"]; 
if (c1 != null || c2 != null) 
{ 
//當(dāng)保存完Cookie之后(也就是說"保存或永久保存"),這個(gè)才能輸出,當(dāng)?shù)诙斡媒y(tǒng)一瀏覽器打開該網(wǎng)站的時(shí)候就會(huì)輸出 
Response.Write(c1.Value + "歡迎光臨"); 
} 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
//提交 
if (TextBox1.Text == "admin" && TextBox2.Text == "123") 
{ 
Response.Write("歡迎光臨"+TextBox1.Text); 
Response.Cookies["UserName"].Value = TextBox1.Text; 
Response.Cookies["Password"].Value = TextBox2.Text; 
if (Dro
pDo
wn
List
1.SelectedItem.Text == "永久保存") 
{ 
//默認(rèn)cookies失效時(shí)間是直到關(guān)閉瀏覽器 
//Cookie保存永久 
Response.Cookies["UserName"].Expires = DateTime.MaxValue; 
Response.Cookies["Password"].Expires = DateTime.MaxValue; 
} 
else 
{ 
//Cookie永不保存 
Response.Cookies["UserName"].Expires = DateTime.Now; 
Response.Cookies["Password"].Expires = DateTime.Now; 
} 
} 
}

當(dāng)我們再次打開該網(wǎng)站(同一瀏覽器)的時(shí)候,就會(huì)彈出“admin歡迎光臨"

關(guān)于“Asp.net內(nèi)置對象之Request對象怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

分享題目:Asp.net內(nèi)置對象之Request對象怎么用
轉(zhuǎn)載來源:http://bm7419.com/article2/jcecic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、全網(wǎng)營銷推廣、軟件開發(fā)、手機(jī)網(wǎng)站建設(shè)、定制開發(fā)、網(wǎng)站營銷

廣告

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

商城網(wǎng)站建設(shè)