天天看點

Request、Request.Params、Request.QueryString、Request.form的差別

request.params、request.querystring、request.form都可以擷取用戶端送出的資料。他們之間有什麼不同呢?

request:request["id"]是一個複合功能讀取函數。它從幾個集合取資料是有順序的,從前到後的順序依次是:querystring > form > cookies > clientcertificate > servervariables,也即是一般get比post優先級高些。request對象按照這樣的順序依次搜尋這幾個集合中的變量,如果有符合的就中止,後面的就不管了

做為一個優秀的程式員要養成好的習慣,記得在request後面加上集合的名字

當我們送出這個表單時同時傳遞了兩個id值,一個是form裡input的id它以post方式送出,而另一個是action裡的url傳遞了一個以get方式送出的id。那麽我們如果用request("id")得到的是哪一個值?就得據其優先級才知道,一般應該是get比post優先級高些

request對象可以不指明具體使用querystring或是form方法,如request("變量"),因為它能自動識别,不過還是指明為好,否則,要它自己判斷也得花些微時間,影響程式執行效率

request.params是所有post和get傳過來的值的集合它依次包括request.querystring、request.form、request.cookies和request.servervariable

request.querystring["id"] 隻能讀取通過位址欄參數傳遞過來的名為id的參數(以get方式送出的資料),如果不存在名為id的位址欄參數request.querystring["id"]将會傳回空

例如:

它是用來接收表單變量的(post 方法)

request.querystring和request.form除了接收方法不同外,還有傳遞資料量大小的問題,request.form方法能接收的資料沒有限制,而request.querystring隻能接收資料量小于2kb資料,當然後者的執行速度要比前者快。一般往資料庫請求查詢時用request.querystring方法,因為查詢時隻不過那麼幾個關鍵詞,沒有必要用request.form方法而導緻查詢速度變慢。另外,request.querystring方法還會把資料資訊顯示在用戶端浏覽器位址欄中,安全性較差。 request.form方法不存在上述問 題,是以大量被應用在多個文本域送出資料和使用者登陸的場合