轉:ASP編程入門進階(四):內建對象Request

來源:互聯網
上載者:User

系統學習ASP,就是先從ASP的幾大內建對象開始的.
一般稱五大對象:Request、Response、Server、Session、Application
今天先來看看Request對象。

當然一直還沒有提到的就是,ASP到底是什麼樣?我看代碼怎麼知道是ASP代碼?
很簡單,當看到“<%”和“%>”就表明是ASP,並且兩者之間的就是ASP源碼。

那為什麼要學對象,對象的作用又是如何的?
其實ASP所提供的這些可在指令碼中使用的內建對象,使使用者更容易收集通過瀏覽器請求發送的資訊、響應瀏覽器以及儲存使用者資訊,從而使對象開發人員擺脫了很多煩瑣的工作。

而Request對象的主要作用就是:在伺服器端接受並得到從用戶端瀏覽器提交或上傳的資訊。Request 對象可以訪問任何基於 HTTP 請求傳遞的所有資訊,包括從Form表單用 POST 方法或 GET 方法傳遞的參數、cookie 等。

一,Request.form("name")

這是接受上一頁的資訊時,常會用到的一種接受方式。Request是ASP對象,form則是Request對象所包含的對象集合(這要有區別與HTML頁中的form表單,是不一樣的),name也就是上一頁表單中的某個文字框、密碼框,或者隱藏欄位等的名稱。並且還有一點非常重要:上一頁Form表單的遞交方法一定要為Post方法。
說不如做,看下面兩個頁面程式。

1,test1.html(本頁是HTML的,主要提供輸入資訊的平台,以將資訊提交到再下面的ASP頁進行接受處理)

<form action="submit1.asp" method="post">
your name:<input tpye="text"  name="yourname"><br>
your pwd: <input type="password" name="yourpwd"><br>
<input type="submit" value="submit">
</form>

2,submit1.asp(ASP頁面,進行從test1.html接受name="yourname"和name="yourpwd"的兩個值)

your name is:<%=request.form("yourname")%><br>
your pwd is:<%=request.form("yourpwd")%>

通過IIS進行HTTP協議的頁面調試,你會發現兩個頁面進行了關聯:test1.html中動態輸入的name和pwd,在submit1.asp也則進行相應的動態顯示。
這就是接收、提取並顯示資訊的全過程。

3,改進的submit1.asp

<% for each i in request.form%>
<%=i%>:
<%=request.form(i)%>
<br>
<%next%>

採用了for迴圈語句,將上頁所有的form標籤資訊進行接受、並顯示。這在上表單頁有很多項目時,非常快捷地出來結果。
首先仍然是request.form,只是後面的("yourname")或("yourpwd")變成了變數 i
通過for迴圈對該form集合進行遍曆提取,這是一種不同於機械地“有幾個就提取幾個”的編程思想,注意掌握。

二,Request.querystring("name")

此時由Request.form變為Request.querystring,最主要的還是上頁表單遞交時,採用的什麼方法。當採用post就用Request.form,否則當採用get時就採用Request.querystring了。

那Request.querystring最大特色在哪裡呢?Request.querystring能檢索並接受 HTTP 查詢字串中變數的值,而HTTP 查詢字串則是由問號 (?) 後的值指定的。說了大半天,繼續看一個程式。

1,test2.html(本頁同是HTML的,主要提供輸入資訊的平台,以將資訊提交到再下面的ASP頁進行接受處理,注意提交方法是get)
運行代碼框

<form action="submit2.asp" method="get">
your name:<input tpye="text"  name="yourname"><br>
your pwd: <input type="password" name="yourpwd"><br>
<input type="submit" value="submit">
</form>

和test1.html最大區別也就是method="get"

2,submit2.asp(ASP頁面,進行從test1.html接受name="yourname"和name="yourpwd"的兩個值)

your name is:<%=request.querystring("yourname")%><br>
your pwd is:<%=request.querystring("yourpwd")%>

注意此時的瀏覽器地址欄,檔案後面多出了?號,?號後面附有變數名及所被賦的值,當然多個變數名之間是用&號進行串連的。
而Request.querystring最大的功能就是能將?號後面的這些變數名分開,並且所對應的值也一一取出。

剛才說到不同的變數名之間是用&號進行串連,但如果是相同的變數名時,request.querystring到底是提取前一個?後一個?還是兩個一起?
用例子說話。
3,query.asp(名稱是query.asp,因為在該頁程式中是反饋給自己。)

<a href="query.asp?bookname=《asp教程》">《asp教程》</a><br>
<a href="query.asp?bookname=《jsp教程》">《jsp教程》</a><br>
<a href="query.asp?bookname=《xsp教程》&bookname=《xml》">《xsp教程》</a><br>
you chosed <%=request.querystring("bookname")%>

很明顯當點《xsp教程》時,顯示的是“《xsp教程》,《xml》”,中間自動加了“,”號。
 
最後仍需要說明的是:request.querystring在分頁程式裡面是經常用到的。象http://www.cnbruce.com/database/

三,Request.ServerVariables("xxx")
其中ServerVariables就是伺服器的環境變數了,該變數包含的內容比較多,我們同樣先採用for迴圈進行遍曆查看下。
1,server1.asp

<%for each i in request.servervariables%> 
<%=i%>:
<%=request.servervariables(i)%>
<hr> 
<%Next%>

可以看到一大堆環境變數,其中還有沒有值的,下面摘取幾個比較常用的。

http_user_agent(用戶端機器的相關環境):<%=request.servervariables("http_user_agent")%><br>

http_accept_language(瀏覽語言):<%=request.servervariables("http_accept_language")%><br>

CONTENT_LENGTH(用戶端發出內容的長度):<%=request.servervariables("CONTENT_LENGTH")%><br>

CONTENT_TYPE(內容的資料類型。如“text/html”。同附加資訊 的查詢一起使用,如 HTTP 查詢 GET、POST 和 PUT):<%=request.servervariables("CONTENT_TYPE")%><br>

LOCAL_ADDR(返回接受請求的伺服器位址。如果在綁定多個IP地址的多重主機機器上尋找請求所使用的地址時,這條變數非常重要):<%=request.servervariables("LOCAL_ADDR")%><br>

REMOTE_ADDR(發出請求的遠程主機client的 IP 地址):<%=request.servervariables("REMOTE_ADDR")%><br>

SERVER_NAME(出現在自引用 URL 中的伺服器主機名稱、DNS 化名 或 IP 地址):<%=request.servervariables("SERVER_NAME")%><br>

SCRIPT_NAME(主機名稱後面的虛擬位址):<%=request.servervariables("SCRIPT_NAME")%><br>

LOGON_USER(使用者登入 Windows NT 的帳號):<%=request.servervariables("LOGON_USER")%><br>

SERVER_PORT(發送請求的連接埠號碼):<%=request.servervariables("SERVER_PORT")%>


根據以上的SERVER_NAME是提取的伺服器主機名稱,SCRIPT_NAME是提取的虛擬位址,則兩者的結合再加上http://  是不是就是個完整的網址呢。
2,server2.asp

<%a=request.servervariables("server_name")%>
<%b=request.servervariables("script_name")%>
<%="http://"&a&b%>

其中http://  用引號引起,表示是一字串,a和b分別是對應了具體值的變數,在ASP中進行這樣的串連就是採用&號。

根據這個結果,我們是不是就可以隨時提取動態URL地址了。

再來看看query.asp,要求一定要儲存為query.asp的,因為如果不是該檔案名稱,程式指向就會出錯。
但現在的這個檔案就隨便你儲存為什麼檔案,都一樣執行。
3,xxx.asp(隨便你儲存成什麼檔案)

<%filepath=request.servervariables("script_name")%>
<a href="<%=filepath%>?bookname=《asp教程》">《asp教程》</a><br>
<a href="<%=filepath%>?bookname=《jsp教程》">《jsp教程》</a><br>
<a href="<%=filepath%>?bookname=《xsp教程》&bookname=《xml》">《xsp教程》</a><br>
you chosed <%=request.querystring("bookname")%>

先將當前檔案的地址取出並賦值給變數filepath
然後所有的連結地址開頭都只要直接引用該變數就OK了。
是不是很有用,有點萬能的感覺。

四,Request.Cookies("name")
不用我說,Cookie是個很重要的東西,究竟如何,等我們學完了下面的對象Response後,會有個特別Cookie的專題講座。
就先擱著吧。

以上四則運用,屬於Request對象的所包含的四個對象集合:form、querystring、servervarivables、cookies。當然還有個ClientCertificate就不說啦

一個ASP內建對象除了對象集合外還有對象屬性對象方法

Request對象的對象屬性只有一個就是TotalBytes(接受的位元組數),你可將

<%=request.totalbytes%>

該語句加入到任何一個接受資料的ASP頁面中進行顯示了。

Request對象的對象方法也還是一個:BinaryRead 。
說實話,這東東不常用,我也沒用過,呵呵。

OK~!有關Request對象的學習就差不多了,最主要是先好好理解三個對象集合,cookies不著急,下節繼續學習對象Response。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.