Request是ASP的耳朵,它可以獲得客戶端傳遞來的消息。
BinaryRead方法和TotalBytes屬性
用於以二進制方式讀取客戶端的請求,比如處理通過客戶端上傳文件時,通常使用這個方法來讀取客戶端所上傳的文件數據。
語法
variant = Request.BinaryRead(count)
count參數是必須的,規定要從客戶端讀取多少字節
整個方法返回一個數組。
Request.TotalBytes只讀屬性,通過這個屬性可以獲得客戶端發出請求的整個字節總數,它通常和BinaryRead方法配合使用,用以獲得用戶的二進制請求。
語法
varbytes = Request.TotalBytes
簡單的例子如下:
<% Dim a, b a = Request.TotalBytes b = Request.BinaryRead(a) %>
Form和QueryString集合
這兩個集合都是客戶端向服務器端發送信息的常用手段。
Form集合一般是通過表單形式提交,多用於用戶注冊、登錄、發表等等場合,使用Form集合獲取的提交數據,要求<form>標簽的method屬性為POST,通過POST方式請求我們的ASP頁面。這時客戶端所填寫的信息將以(名稱=值)方式附加在HTTP請求頭之后,在ASP端我們就可以通過Form集合來獲取。
QueryString集合我們又稱為地址欄變量集合,例如經常瀏覽論壇帖子的URL,如下:
這樣提交的信息就可以通過Request.QueryString集合來獲取。QueryString也可以通過在設計表單時,將<form>標簽的method屬性設為GET來提交。
下面我們舉個例子來說明,這個例子包含兩個文件,FormGet.html和get.asp,Form.html主要顯示一個表單,讓用戶輸入一些信息,GET.asp通過QueryString集合來獲取用戶填寫的內容。
FormGet.html 關鍵代碼如下:
…
<form action="get.asp" method="get"> <p>名 : <input name="firstname"></p> <p>姓 : <input name="lastname"></p> <p>你最喜歡的顏色 : <select name="color"> <option>藍</option> <option>綠</option> <option>紅</option> <option>黃</option> <option>粉</option> </select> </p> <p><input type="submit"></p> </form> …
get.asp 關鍵代碼如下:
…
<h1>你好, <% =Request.QueryString("lastname") %> <% =Request.QueryString("firstname") %> </h1> <p>你最喜歡的顏色是 <% =Request.QueryString("color") %></p> …
運行 FormGet.html 后,顯示如下:
點擊“提交查詢”后,通過 GET 方式傳遞給 get.asp 文件,如下圖:
我們也可以嘗試着改寫 FormPost.html 的表單通過POST方式提交,由post.asp文件通過Form集合來獲取用戶填寫的內容。
formpost.html 和 前面的 formget.html 一樣,就是<form>標簽的method屬性修改為post。
<form action="post.asp" method="post">
post.asp 關鍵代碼如下:
... <h1>你好, <% =Request.Form("lastname") %> <% =Request.Form("firstname") %> </h1> <p>你最喜歡的顏色是 <% =Request.Form %></p> ...
運行 formpost.html 后並“提交查詢”后結果如下:
Cookies集合
在上一節 Response 對象的講解中我們的例子中有如何向客戶端發送 Cookies 來存儲信息,后面的代碼中又從客戶端讀取 Cookies 信息。
這里我們在舉個歡迎的例子WelcomeCookies.asp,自動記錄您是第幾次訪問,主要代碼如下:
…
<% Dim numVisits '設置numVisits在一年后過期 Response.Cookies("numVisits").Expires = DateAdd("d", 365, Date()) numVisits = Request.Cookies("numVisits") If numVisits = "" Then '沒有numVisits,是第一次登錄, Response.Cookies("numVisits") = 1 Response.Write("<h1>歡迎,這是您第一次訪問該頁面!</h1>") Else numVisits = numVisits + 1 Response.Write("<h1>這是您第 " & numVisits & " 次訪問。</h1>") Response.Cookies("numVisits") = numVisits End If %> …
第一次運行該頁面,會顯示
第二次再次該頁面,顯示如下:
ServerVariables集合
使用這個集合,不僅可以獲得客戶端向服務器端發送請求的一些信息,還可以獲得服務端的一些信息。
下面這個例子 (ShowAllServerVariables.asp),將顯示出所有的服務器變量信息,主要代碼如下:
... <% Dim x For Each x In Request.ServerVariables Response.Write("<p><b>【" & x & "】</b>") Response.Write(Request.ServerVariables(x) & "</p>") Next %> ...
顯示效果如下圖:
部分常用服務器環境變量列表:
名稱 | 作用 |
ALL_HTTP | 客戶端發送的HTTP headers |
CONTENT_LENGTH | 客戶端發送內容的長度 |
CONTENT_TYPE | 內容的數據類型 |
LOCAL_ADDR | 返回請求的服務器地址 |
LOGON_USER | 用戶登錄WindowsNT賬號 |
QUERY_STRING | 查詢HTTP請求中?后的信息 |
REMOTE_ADDR | 發出請求的遠程主機(client)IP地址 |
REMOTE_HOST | 發出請求的主機(client)名稱 |
REQUEST_METHOD | 請求的方法,GET、POST等 |
SERVER_NAME | 出現在URL中的服務器主機名、DNS別名或IP地址 |
SERVER_PORT | 發送請求的端口號 |
ClientCertificate集合
包含了存儲在客戶證書中的所有的字段值,這個集合不常用。某些對於安全性較高的場合試用,支付類網站。