明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

ASP知識講座二

[摘要]學(xué)習(xí)ASP,最重要的就是要掌握ASP內(nèi)置的六大對象。事實(shí)上,在上一講中,我們已經(jīng)了解了 Response對象(是嗎?有沒有搞錯。,及Response對象中最常用的Write方法、Redirect方...

學(xué)習(xí)ASP,最重要的就是要掌握ASP內(nèi)置的六大對象。事實(shí)上,在上一講中,我們已經(jīng)了解了
 
Response對象(是嗎?有沒有搞錯!),及Response對象中最常用的Write方法、Redirect方
 
法和Expires屬性。看到對象、方法、屬性、集合、事件這些概念(俺一個都不識。,如果以
 
前沒接觸過,聰明的您就不要管這些概念了,知道怎么用就行了,我的觀點(diǎn)是剛開始關(guān)鍵在于臨
 
摹。下面我們繼續(xù)通過實(shí)例學(xué)習(xí)Request對象,為了加深理解,務(wù)請運(yùn)行這些程序看看輸出結(jié)果
 
一、 使用Request.ServerVariables獲取環(huán)境變量,這部分內(nèi)容很簡單,但獲取的內(nèi)容卻很重
 
要,如何獲取?請看下例:
 
<%@ Language=VBScript %>
 
<HTML><BODY> 
 
<% 'wuf8.asp
 
Response.Write "運(yùn)行ASP文件的路徑: " &_
 
Request.ServerVariables("Script_Name") & "<Br>"
 
Response.Write "返回content的數(shù)據(jù)長度: " &_
 
Request.ServerVariables("Content_Length") & "<Br>"
 
Response.Write "返回客戶的IP地址: " &_
 
Request.ServerVariables("Remote_Addr") & "<Br>"
 
Response.Write "瀏覽器名: " &_
 
Request.ServerVariables("HTTP_USER_AGENT") & "<Br>"
 
Response.Write "返回主頁實(shí)際物理路徑: " &_
 
Request.ServerVariables("APPL_PHYSICAL_PATH") & "<Br>"
 
%>
 
  
<table colspan=8 cellpadding=5 border=0> 
<tr>  
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW"  
color="#ffffff" size="2">環(huán)境變量名</font></td> 
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW"  
color="#ffffff" size="2">內(nèi)容</font></td> 
</tr> 
<tr>  
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">  
result1 
</font></td>  
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2"> 
result2 
</font></td></tr> 
</table> 
</BODY></HTML> 
Now,你應(yīng)該發(fā)現(xiàn)上一講中的例程wuf2.asp原來是多么的easy! 
注意:該程序的后面一部分HTML標(biāo)記純是為下面的例子作準(zhǔn)備的,所以不要覺得奇怪。那么,還 
有哪些環(huán)境變量呢?運(yùn)行下面的例子就知道了(本程序刪除了部分代碼,最好去我站點(diǎn)下載源程 
序便于理解)。 
<%@ Language=VBScript %> 
<% 'wuf9.asp 
Option Explicit 
Dim Sv 
%> 
<HTML><BODY>  
<table colspan=8 cellpadding=5 border=0> 
<tr>  
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW"  
color="#ffffff" size="2">環(huán)境變量名</font></td> 
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW"  
color="#ffffff" size="2">結(jié)果</font></td> 
</tr> 
<% 
for each Sv In Request.ServerVariables 
Response.Write "<tr>"  
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW'  
size='2'>" 
Response.Write Sv 
Response.Write "</font></td>" 
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW'  
size='2'>" 
Response.Write Request.ServerVariables(Sv) 
Response.Write "</font></td></tr>" 
next 
%> 
</table>  
</BODY></HTML> 
這里使用了For…Each循環(huán),用來列舉一個集合中的所有元素。如果后半部分看不懂,請對照 
wuf8.asp,再瞧瞧運(yùn)行結(jié)果,仔細(xì)體會一下(什么態(tài)度?)。  
二、 通過表單向服務(wù)器傳送數(shù)據(jù)(也可這樣理解,服務(wù)器端如何讀取客戶端發(fā)送的數(shù)據(jù))做過 
主頁,應(yīng)該知道很多主頁通常都使用Form表單讓用戶輸入數(shù)據(jù),然后通過"submit(提交)"按 
鈕發(fā)送數(shù)據(jù)。From表單中的"method"有兩種主要方法:POST和GET,而"action"后一般都是指 
定一個.cgi、.pl或.asp文件,今天我們要學(xué)習(xí)的就是如果編寫這個.asp文件。 
(一) 如果使用POST方法傳送數(shù)據(jù),則用Request.Form來讀取數(shù)據(jù)。先編輯如下一個 
wuf10.htm文件,供用戶輸入數(shù)據(jù): 
<html> 
<body bgcolor="#FFFFFF"> 
<form method="post" action="wuf11.asp"> 
姓名: <input type="text" name="yourname"><br> 
性別: <select name="gender"> 
<option>男</option> 
<option>女</option> 
</select> <br> 
留言: <textarea name="message">您好! 
注意多行文本的處理</textarea> <br> 
愛好(按住Ctrl鍵可多選):  
<select name="hobby" multiple size="4"> 
<option>電腦</option> 
<option>購物</option> 
<option>電影</option> 
<option>讀書</option> 
</select> <br> 
<input type="submit" name="Submit" value="提交"> 
<input type="reset" name="Submit2" value="Reset"> 
</form> 
</body> 
</html> 
再編寫一個wuf10.htm需用到的文件wuf11.asp收集數(shù)據(jù): 
<%@ Language=VBScript %> 
<% 'wuf11.asp 
Option Explicit 
Response.Expires=0 
Dim StrName, StrGender, StrM, StrMsg  
StrName = Trim(Request.Form("yourname")) 'Trim函數(shù)用來除首尾空格 
StrGender = Trim(Request.Form("gender")) 
StrM = Trim(Request.Form("message")) 
StrMsg = Replace(StrM,vbcrlf,"<Br>" & vbcrlf)  
' vbcrlf相當(dāng)于回車符和換行符的組合。至于Replace函數(shù),其作用就是將字符串StrM中的 
vbcrlf替換為"<Br>" & vbcrlf(請思考這個vbcrlf有什么用?查看輸出文件的HTML源碼就明 
白了),詳細(xì)請參考VBScript幫助。 
%> 
<HTML><BODY> 
姓名: <%= StrName%><Br><Br> 
性別: <%= StrGender%><Br><Br> 
留言: <Br><Br> 
<%= StrM%><Br><Br> 
<%= StrMsg%><Br><Br> 
實(shí)際上, "提交"按鈕的值也被傳遞: <Br> 
<%= Request.Form("Submit")%><Br><Br>  
<% '先把上面看懂, 有興趣再看看如何讀取多個選項(xiàng) 
Response.Write "共選擇愛好項(xiàng)數(shù):" & Request.Form("hobby").Count & "<Br>" 
Dim I  
For I = 1 to Request.Form("hobby").Count 
Response.Write Request.Form("hobby")(I) & "<Br>" 
Next 
%> 
</BODY></HTML> 
在這個的例子中,為了便于理解,我們使用了兩個程序,實(shí)際上只使用一個程序也可以,如果有 
興趣請看下面的例程wuf12.asp,有助于加深對環(huán)境變量的理解。 
<%@ Language=VBScript %> 
<% 'wuf12.asp 
Option Explicit 
Response.Expires=0 
Dim StrName, StrGender, StrM, StrMsg  
If Request.ServerVariables("Content_Length") <> 0 Then
 
'提交數(shù)據(jù)后,這個長度就不會是 0, 因此執(zhí)行下面的語句, 將結(jié)果顯示出來
 
'下面一部分實(shí)際上是照搬 wuf11.asp 
 
StrName = Trim(Request.Form("yourname")) 
 
StrGender = Trim(Request.Form("gender"))
 
StrM = Trim(Request.Form("message"))
 
StrMsg = Replace(StrM,vbcrlf,"<Br>" & vbcrlf) 
 
%>
 
<HTML><BODY>
 
姓名: <%= StrName%><Br><Br>
 
性別: <%= StrGender%><Br><Br>
 
留言: <Br><Br>
 
<%= StrM%><Br><Br>
 
<%= StrMsg%><Br><Br>
 
<%  
Response.Write "共選擇愛好項(xiàng)數(shù):" & Request.Form("hobby").Count & "<Br>" 
Dim I  
For I = 1 to Request.Form("hobby").Count 
Response.Write Request.Form("hobby")(I) & "<Br>" 
Next 
%> 
</BODY></HTML>  
<% 
Else 
'當(dāng)?shù)谝淮渭虞d頁面時,沒有提交任何數(shù)據(jù),故前面一部分并不執(zhí)行,而是從這里開始 
'這也就是為什么會有兩對 <HTML></HTML> 的原因 
'下面照搬 wuf10.htm 就行了 
'<form method="post" action="wuf11.asp"> 給用環(huán)境變量替換掉了, 其實(shí)完全一樣 
Response.Write "看看結(jié)果: " & Request.ServerVariables("Script_name") & "<Br>" 
%> 
<HTML><BODY> 
<form method="post" action="<%= Request.ServerVariables("Script_name")%>"> 
姓名: <input type="text" name="yourname"><br> 
性別: <select name="gender"> 
<option>男</option> 
<option>女</option> 
</select> <br> 
留言: <textarea name="message">您好! 
注意多行文本的處理</textarea> <br> 
愛好(按住Ctrl鍵可多選):  
<select name="hobby" multiple size="4"> 
<option>電腦</option> 
<option>購物</option> 
<option>電影</option> 
<option>讀書</option> 
</select> <br> 
<input type="submit" name="Submit" value="提交"> 
<input type="reset" name="Submit2" value="Reset"> 
</form> 
</BODY></HTML> 
<%End If%> 
(二)如果使用GET方法傳送數(shù)據(jù),則用Request.Querystring來讀取數(shù)據(jù)。先編輯如下一個 
wuf13.htm文件,供用戶輸入數(shù)據(jù) 
<html> 
<body bgcolor="#FFFFFF"> 
<form method="get" action="wuf14.asp"> 
英文姓名: <input type="text" name="Ename"> <br> 
中文姓名: <input type="text" name="Cname"><br> 
性別: <select name="gender"> 
<option>男</option> 
<option>女</option> 
</select> <br> 
<input type="submit" name="Submit" value="提交"> 
<input type="reset" name="Submit2" value="Reset"> 
</form> 
</body> 
</html> 
再編寫一個wuf13.htm需用到的文件wuf14.asp收集數(shù)據(jù): 
<%@ Language=VBScript %> 
<% 'wuf14.asp 
Option Explicit 
Response.Expires=0 
Dim StrCname, StrEname, StrGender  
StrEname = Trim(Request.QueryString("Ename")) 'Trim函數(shù)用來除首尾空格 
StrCname = Trim(Request.QueryString("Cname"))  
StrGender = Trim(Request.QueryString("gender")) 
%> 
<HTML><BODY> 
英文姓名: <%= StrEname%><Br><Br> 
中文姓名: <%= StrCname%><Br><Br> 
性別: <%= StrGender%><Br><Br> 
看看提交的字符串: <Br> 
<%= Request.ServerVariables("Query_String")%> 
</BODY></HTML> 
為了更好地理解這個程序,你最好先在瀏覽器中試試?yán)蘷uf13.htm的效果,看看輸出的結(jié)果, 
你會發(fā)現(xiàn)地址欄中長長的字符串似曾相識,如同在Yahoo搜索時看到的差不多。這時,你試著在 
地址欄中直接輸入"http://localhost/wuf14.asp?Ename=Rose&Cname=李二&gender=女" 居 
然也得到了同樣的結(jié)果。所以你可以這樣看,wuf13.htm的結(jié)果就是得到了類似這樣的一個帶參 
數(shù)的鏈接。而Request.QueryString則是從http:// 地址的附加參數(shù)中讀取各個數(shù)據(jù)。 
實(shí)際上當(dāng)按"提交"按鈕后,查詢字符串(輸入的數(shù)據(jù))會以參數(shù)的形式附加到URL地址后(各參 
數(shù)間以"&"分隔),達(dá)到傳遞數(shù)據(jù)的目的。同時,注意瀏覽器中顯示的查詢字符串中沒有中文, 
而是不認(rèn)識的含百分號的亂碼,這是因?yàn)檫M(jìn)行了編碼的緣故。最后,與前面一樣,這兩個程序也 
可合并為一個程序(例程wuf15.asp,需去我站點(diǎn)下載)。 
幾點(diǎn)說明: 
1. 若使用POST方法提交數(shù)據(jù),則Request.ServerVariables("Content_Length")>0。 
若使用GET方法提交數(shù)據(jù),則Request.ServerVariables("Query_String") <> ""。 
2.弄懂原理后你完全可以在同一個ASP文件中混合使用Request.Form和Request.QueryString 
3. 如果在一個Form表單中,有幾個按鈕,你如何確定用戶按了哪個按鈕?如果留意的話,會發(fā) 
現(xiàn)例程wuf11.asp中有一句,"提交"按鈕的值也被傳送,而wuf13.htm中生成的查詢字符串最后 
也可以找到類似的值。請注意:只有被按按鈕的值被傳送,而其他按鈕的值為"",這就是判斷依 
據(jù)(《中計報》InfoWeb網(wǎng)站有一篇類似文章)。 



標(biāo)簽:ASP知識講座二