asp中獲取傳遞的參數,一般用request或者用request成員函數request.form,兩種方式都可以獲取頁面表單傳遞過來的參數值,一直沒留意兩種方法有什么區別,我一般喜歡用request("abc")這樣的形式,簡單明了嘛。
最近修改了一些kingcms的代碼,其中有一段代碼是用request.form("abc")這樣的形式獲取傳遞的參數,可我在地址欄輸入傳遞 的參數無論如何也無法通過這段代碼獲取,仔細看了一下,才發現,是由於request和request.form的不同機制造成的。
首先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.form
最方便最好用的嘛,哈哈,就是request本身來的直接了,不管怎么傳遞的數據都能獲取,性能嘛,略有下降,不過對於現在的網絡和計算機來說,可以忽略不計,所以我最喜歡用request("abc")這樣的寫法
總結;
1.Request.form方法,它是用來接收表單變量的(post 方法)
2.Request.QueryString方法, 它是接收URL參數的 (get 方法)
3.Request對象也可以不指明具體使用QueryString或是form方法,如request("變量"),因為它能自動識別,不過還是 指明為好,否則,要它自己判斷也得花些微時間,影響程序執行效率。Request:包含以上兩種方式(優先獲取GET方式提交的數據),它會在 QueryString、Form、ServerVariable中都搜尋一遍。
兩者除了接收方法不同外,還有傳遞數據量大小的問題,request.form方法能接收的數據沒有限制,而 request.QueryString只能接收數據量小於2KB數據,當然后者的執行速度要比前者快。一般往數據庫請求查詢時用 request.QueryString方法,因為查詢時只不過那么幾個關鍵詞,沒有必要用request.form方法而導致查詢速度變慢。另 外,request.QueryString方法還會把數據信息顯示在客戶端瀏覽器地址欄中,安全性較差。 request.form方法不存在上述問 題,因此大量被應用在多個文本域提交數據和用戶登陸的場合