Request、Request.Form和Request.QueryString的區別

Request、Request.Form和Request.QueryString的區別 html

request自己是一個系統的靜態對象,自己也能夠做爲數組調用,好比request("abc")就是獲取request數組中鍵值"abc"對應的值,而這個數組又不是固定的,而是多個數組的集合,其中包含了(QueryString ,Form ,Cookies ,ClientCertificate,ServerVariables )這幾個服務器變量數組的值,也就是說,經過request能夠依次遍歷這幾個數組並返回對應的值,使用起來非常方便,一勞永逸。數據庫

 

而request.form這個request的成員函數就不是那麼寬泛的取值了,僅僅是從form數組中取值,也就是頁面表單<form>標籤的輸入單元(好比<input type=text >傳遞過來的值。那麼經過form就沒法獲取連接字符串中以index.asp?abc=123這樣的形式傳遞過來的參數了。數組

 

還有一種方法是request.QueryString("abc")這種形式,能夠獲取QueryString 連接字符串傳遞的參數了。瀏覽器

 

以http的幾種傳遞數據機制來講,這三種方法能夠這樣區分。安全

 

request.form能夠獲取以post方式提交的數據,requst.querystring能夠獲取以get方法提交的數據,而request則是能夠同時獲取兩種方法傳遞的數據。服務器

 

按照傳遞數據量來講,request.form能夠傳遞不限大小的數據而request.querystring只能傳遞2k的數據量函數

 

按照速度來講,request.qeurystring 會略快於request.formpost

 

最方便最好用的嘛,request自己來的直接了,無論怎麼傳遞的數據都能獲取,性能嘛,略有降低,可忽略不計,通用的可使用 request("abc")這樣的寫法。性能

 

Request.Form:獲取以POST方式提交的數據(接收Form提交來的數據)學習

Request.QueryString:獲取地址欄參數(以GET方式提交的數據)

Request:包含以上兩種方式(優先獲取GET方式提交的數據),它會在QueryString、Form、ServerVariable中都搜尋一遍。

       並且有時候也會獲得不一樣的結果。若是你僅僅是須要Form中的一個數據,可是你使用了Request而不是Request.Form,那麼程序將在QueryString、ServerVariable中也搜尋一遍。若是正好你的QueryString或者ServerVariable裏面也有同名的項,你獲得的就不是你本來想要的值了。

 

 Request.ServerVariables中的各類參數

 

Request.ServerVariables("Url") 
返回服務器地址

Request.ServerVariables("Path_Info") 
客戶端提供的路徑信息

Request.ServerVariables("Appl_Physical_Path") 
與應用程序元數據庫路徑相應的物理路徑

Request.ServerVariables("Path_Translated") 
經過由虛擬至物理的映射後獲得的路徑

Request.ServerVariables("Script_Name") 
執行腳本的名稱

Request.ServerVariables("Query_String") 
查詢字符串內容

Request.ServerVariables("Http_Referer") 
請求的字符串內容

Request.ServerVariables("Server_Port") 
接受請求的服務器端口號

Request.ServerVariables("Remote_Addr") 
發出請求的遠程主機的IP地址

Request.ServerVariables("Remote_Host") 
發出請求的遠程主機名稱

Request.ServerVariables("Local_Addr") 
返回接受請求的服務器地址

Request.ServerVariables("Http_Host") 
返回服務器地址

Request.ServerVariables("Server_Name") 
服務器的主機名、DNS地址或IP地址

Request.ServerVariables("Request_Method") 
提出請求的方法好比GET、HEAD、POST等等

Request.ServerVariables("Server_Port_Secure")
若是接受請求的服務器端口爲安全端口時,則爲1,不然爲0

Request.ServerVariables("Server_Protocol")
服務器使用的協議的名稱和版本

Request.ServerVariables("Server_Software")
應答請求並運行網關的服務器軟件的名稱和版本

Request.ServerVariables("All_Http")
客戶端發送的全部HTTP標頭,前綴HTTP_

Request.ServerVariables("All_Raw")
客戶端發送的全部HTTP標頭,其結果和客戶端發送時同樣,沒有前綴HTTP_

Request.ServerVariables("Appl_MD_Path")
應用程序的元數據庫路徑

Request.ServerVariables("Content_Length")
客戶端發出內容的長度

Request.ServerVariables("Https")
若是請求穿過安全通道(SSL),則返回ON若是請求來自非安全通道,則返回OFF

Request.ServerVariables("Instance_ID")
IIS實例的ID號

Request.ServerVariables("Instance_Meta_Path")
響應請求的IIS實例的元數據庫路徑

Request.ServerVariables("Http_Accept_Encoding")
返回內容如:gzip,deflate

Request.ServerVariables("Http_Accept_Language")
返回內容如:en-us

Request.ServerVariables("Http_Connection")
返回內容:Keep-Alive

Request.ServerVariables("Http_Cookie")
返回內容如:nVisiT%

2DYum=125;ASPSESSIONIDCARTQTRA=FDOBFFABJGOECBBKHKGPFIJI;ASPSESSIONIDCAQQTSRB=LKJJPLABABILLPCOGJGAMKAM;ASPSESSIONIDACRRSSRA=DK

HHHFBBJOJCCONPPHLKGHPB

Request.ServerVariables("Http_User_Agent")
返回內容:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)

Request.ServerVariables("Https_Keysize")
安全套接字層鏈接關鍵字的位數,如128

Request.ServerVariables("Https_Secretkeysize")
服務器驗證私人關鍵字的位數如1024

Request.ServerVariables("Https_Server_Issuer")
服務器證書的發行者字段

Request.ServerVariables("Https_Server_Subject")
服務器證書的主題字段

Request.ServerVariables("Auth_Password")
當使用基本驗證模式時,客戶在密碼對話框中輸入的密碼

Request.ServerVariables("Auth_Type")
是用戶訪問受保護的腳本時,服務器用於檢驗用戶的驗證方法

Request.ServerVariables("Auth_User")
代證的用戶名

Request.ServerVariables("Cert_Cookie")
惟一的客戶證書ID號

Request.ServerVariables("Cert_Flag")
客戶證書標誌,若有客戶端證書,則bit0爲0若是客戶端證書驗證無效,bit1被設置爲1

Request.ServerVariables("Cert_Issuer")
用戶證書中的發行者字段

Request.ServerVariables("Cert_Keysize")
安全套接字層鏈接關鍵字的位數,如128

Request.ServerVariables("Cert_Secretkeysize")
服務器驗證私人關鍵字的位數如1024

Request.ServerVariables("Cert_Serialnumber")
客戶證書的序列號字段

Request.ServerVariables("Cert_Server_Issuer")
服務器證書的發行者字段

Request.ServerVariables("Cert_Server_Subject")
服務器證書的主題字段

Request.ServerVariables("Cert_Subject")
客戶端證書的主題字段

Request.ServerVariables("Content_Type")
客戶發送的form內容或HTTPPUT的數據類型 

在.net學習開發中,基礎比較重要。如今我將一些最基礎的.net知識一點點總結,溫故知新。


咱們在網頁開發的過程當中要接受來自頁面傳來的值,這也是咱們要了解的基礎內容。
使用Request.Form,ASP是從FORM集合中搜索。
使用Request,ASP是以以下順序進行搜索:
     1.QueryString
     2.Form
     3.Cookies
     4.ClientCertificate
     5.ServerVariables
若是在QueryString裏也存在一個同Form裏相同的變量名,則不會返回Form裏的值,而是QueryString的。

      Request.form:獲取前臺form表單以POST方式提交的數據
      Request.QueryString :獲取地址欄參數(以GET方式提交的數據)
      Request:包含以上兩種方式(優先獲取GET方式提交的數據)

二者除了接收方法不一樣外,還有傳遞數據量大小的問題:

Request.form方法能接收的數據沒有限制,而Request.QueryString只能接收數據量小於2KB數據,固然後者的執行速度要比前者快。 通常向數據庫請求查詢時用request.QueryString方法,由於查詢時只不過那麼幾個關鍵詞,沒有必要用request.form方法而致使查詢速度變慢。 另外,request.QueryString方法還會把數據信息顯示在客戶端瀏覽器地址欄中,安全性較差。 request.form方法不存在上述問題,所以大量被應用在多個文本域提交數據和用戶登錄的場合。 request對象也能夠不指明具體使用QueryString或是form方法,如request("變量"),由於它能自動識別, 不過仍是指明爲好,不然,要它本身判斷也得花些微小的訪問時間,影響程序執行效率。

相關文章
相關標籤/搜索