ASP入門(八)-Request對象


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,如下:

20150813001

這樣提交的信息就可以通過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 后,顯示如下:

20150813002

點擊“提交查詢”后,通過 GET 方式傳遞給 get.asp 文件,如下圖:

20150813003

我們也可以嘗試着改寫 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 后並“提交查詢”后結果如下:

20150813004


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
%>

第一次運行該頁面,會顯示

20150813005

第二次再次該頁面,顯示如下:

20150813006


ServerVariables集合

使用這個集合,不僅可以獲得客戶端向服務器端發送請求的一些信息,還可以獲得服務端的一些信息。

下面這個例子 (ShowAllServerVariables.asp),將顯示出所有的服務器變量信息,主要代碼如下:

...
<%
Dim x
For Each x In Request.ServerVariables
  Response.Write("<p><b>【" & x & "】</b>")
  Response.Write(Request.ServerVariables(x) & "</p>")
Next
%>
...

顯示效果如下圖:

20150813007

部分常用服務器環境變量列表:

名稱 作用
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集合

包含了存儲在客戶證書中的所有的字段值,這個集合不常用。某些對於安全性較高的場合試用,支付類網站。


示例代碼下載

Request.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM