dreamweaver|編程
預讀提示:要讀懂本文,請確保你已經學會使用DW MX ASPVBScript模式的“伺服器行為”,但你不須懂得asp文法。
本文如有闡述錯誤或技術性錯誤的話,請各位高手在論壇發貼予以更正。
自從本人在UDSKY論壇發布有關於用DW MX設計論壇的訊息後,網友反響熱切,大多數網友是支援的。而且據我瞭解,許多朋友只熟悉用DW MX來設計靜態頁,背景程式方面也不太熟。所以筆者先嘗試撰寫此文供“菜鳥”們事前好好地“補習”一翻。筆者相信,“菜鳥”們個個都不是傻瓜,如果肯努力,別人能做到的,你也能行!
因局限於DW MX的伺服器行為模板功能,完全用它來設計結構複雜的論壇較困難(當然,如果你只是做個比留言本功能更強些的“實用型論壇”是沒問題的)。下面和大家切磋一下ASP的基本文法,考慮到我們的““菜鳥””一般對ASP不太熟,本文也不是ASP基礎完全教程,但是針對忠於DW MX而初學ASP的使用者而寫,只簡單介紹幾個基本對象,方法、屬性及簡單應用執行個體,這些在DW MX的ASP伺服器程式設計中使用極頻繁的;也即是說,先前你並不須要對ASP有絲毫的瞭解,只要花點時間,練練文中介紹的小例子,記住這幾個對象使用方法,然後配合DW MX強大的伺服器行為,設計出屬於你自己的伺服器應用程式。
如果你是ASP高手,此文對你沒什麼可讀之處,如有錯誤,請賜教!我們的“菜鳥”級朋友們卻不然,雖然網上、書籍有關於此的教程文章多得滿天飛,但很少有針對DW MX而作的,而且太多的“文法簡介”,令人心煩氣燥。好了,閑話少說,轉入正題。
本文涉及到的幾個基本對象:
- Request對象
- Response對象
- session對象
明眼人一看就知這是ASP內建對象的其中三個,使用極頻繁,如果你要學好ASP,這幾個對象必須熟練掌握。下面一一介紹這幾個對象的使用方法、屬性等,每講完一個知識點便即時剖析DW MX產生代碼功用,並嘗試動手編寫實現DW MX的一些功能的代碼,不過代碼要比DW MX自動產生的簡單得多,只要以執行個體為主,使大家有個感性認識,易於理解和消化。
一、Request對象——接收用戶端資料
“request”的中文譯義為“請求”。Request對象是ASP的“眼睛”和“耳朵”,用戶端的明暗動靜,由它來負責監督,諸如表單提交,URL參數傳遞等,均被它一一輯拿於手。多說無益,先試試身手再說。開啟DW MX,執行“檔案”——“建立”命令,彈出“建立文檔”對話方塊,在“常規”選項卡的“類別”中選中“動態網頁”,動態網頁項選中“ASP VBScript”,因為我們只要是使用VBScript作為AS的指令碼語言,點擊“建立”。
Request對象的文法格式:
request[集合|屬性|方法|(變數)]
使用request對象可以訪問任何基於HTTP請求傳遞的資訊,包括從用戶端HTML表單用POSP或GET方法傳遞的參數、Cookie和使用者戶認證。
●執行個體一,使用request對象的form方法
分別插入表單、文本域和扭按,文本網域名稱稱為“oo”,表單方法為“POST”,其它兩個東東不用理。
在<body></body>標籤中寫入以下代碼:
<%=request.form("oo")%>
完整的代碼如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>無標題文檔</title> </head> <body> <%=request.Form("oo")%> <form name="form1" method="post" action=""> <input name="oo" type="text" id="oo"> <input type="submit" name="Submit" value="提交"> </form> </body> </html> |
其中,文本網域名稱稱一定要與request.Form("oo")中的Form("變數")集合中的變數名匹配,才能接收用戶端表單提交過來的資料,如本例的“oo”。試按“F12”鍵預覽,在文本域中隨便輸入一些內容,按“提交”按扭,是不是把剛才輸入的內容顯示出來了?
在本例中,我們用到了Request.form方法,它是用來接收表單變數的,還有“<%”、“%>”、“=”這幾個符號,“<%”和“%>”是ASP的定界符,凡包含有ASP語句的代碼均要用該定界符以區別開其它的HTML代碼,並且伺服器能對它進行解釋。“=”具有輸出功能,沒有它將不能向用戶端輸出資料,你可以把這個符號去掉試試與剛才的反應有什麼不同(什麼也沒有顯示)。
除了request.form方法外,還有request.QueryString方法,與request.form不同的是,它是接收URL參數的,諸如大家瀏覽網頁時看到這樣的格式地址:
http://localhost/asp/uio.asp?oo=request對象的使用
這個地址格式中,用“?”在分開地址資訊URL參數,“?”前的“http://localhost/asp/uio.asp”為地址資訊,“?”後的“oo=request對象的使用”為URL參數,其中“oo”是承載資料的變數,這個變數名你可以隨便叫,應該以英文字母為主,可以包括底線“_”,但不要以底線開頭。下面,就以request對象的QueryString方法,點擊頁面中超連結開啟另一個頁面的同時把附帶的資料傳遞到該頁。
●執行個體二,使用request對象的QueryString方法
目標頁:檔案名稱為bbb.asp
ASP語句:
<%=request.QueryString("uu")%>
完整代碼:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>無標題文檔</title> </head> <body> <p><%=request.QueryString("uu")%></p> <form name="form1" method="post" action=""> <input name="oo" type="text" id="oo"> <input type="submit" name="Submit" value="提交"> </form> </body> </html> |
傳遞頁:檔案名稱為aa.htm
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>無標題文檔</title> </head> <body> <a href="bbb.asp?uu=把我傳遞到bbb.asp頁去!">點擊這兒,把資料傳遞到bbb.asp頁 </a> </body> </html> |
超連結格式為<a href="Untitled-3.asp?uu=把我傳遞到bbb.asp頁去!">連結文本</a>
先執行aa.htm頁,點擊超連結,是不是把“把我傳遞到bbb.asp頁去!”傳遞到目標頁中去了?
●request.form與request.QueryString的比較
兩者除了接收方法不同外,還有傳遞資料量大小的問題,request.form方法能接收的資料沒有限制,而request.QueryString只能接收資料量小於2KB資料,當然後者的執行速度要比前者快。一般往資料庫請求查詢時用request.QueryString方法,因為查詢時只不過那麼幾個關鍵詞,沒有必要用request.form方法而導致查詢速度變慢。另外,request.QueryString方法還會把資料資訊顯示在用戶端瀏覽器地址欄中,安全性較差。 request.form方法不存在上述問題,因此大量被應用在多個文本域提交資料和使用者登陸的場合。
request對象也可以不指明具體使用QueryString或是form方法,如request("變數"),因為它能自動識別,不過還是指明為好,否則,要它自己判斷也得花些微時間,影響程式執行效率。
●DW MX中的代碼剖析
以下所示,是插入Command1命令伺服器行為時接收URL參數的語句
<%
if(Request.QueryString("ID") <> "") then Command1__MMid = Request.QueryString("ID")
%>
這句代碼的作用是,當由Request對象的QueryString方法接收的URL參數“ID”不為空白時,則把“ID”承載的資料資訊賦值給變數“Command1__MMid”(說白了,也就是Command1__MMid=ID),以便下一個須要調用“Command1__MMid”變數的程式使用。這裡有一個if.....then的判斷語句,稍後會講到的。
註:相關的比較子注釋:
<> 不相等,當左右兩邊的運算式的值不相等時,結果為真。例如,1<>2,結果為真。
= 相等,當左右兩邊的運算式的值相等時,結果為真。例如,to=to,結果為真。
> 大於,當左邊運算式的值大於右邊運算式的值時,結果為真例如,5>3 ,結果為真。
< 小於,當左邊運算式的值小於右邊運算式的值時,結果為真。例如,3<5 ,結果為假。
>= 當左邊運算式的值大於或等於右邊運算式的值時,結果為真。
<= 當左邊運算式的值小於或等於右邊運算式的值時,結果為真。
●執行個體三,使用request對象結合條件判斷語句
在學習這個執行個體前,先要試試VBScript指令碼的幾個超簡單的東西,因為ASP的主體部分是靠VBScript指令碼來控制的啊,如迴圈(DW MX中稱為“重複地區”)、利用條件判斷執行命令等。這裡不會介紹太多的VBScript文法,請放心,呵呵!
1、常用的 if...then...else...end if 選擇語句
如果你懂英文(我用金山快譯翻譯才知道的呀,唉!誰叫俺是英文肓呢)的話,也可以大概看得出這個語句的意思了,就是“如果.....然後...別的...結束”,沒錯,它的作用被它自己說明了,也即是:
if (如果什麼什麼時)....then(然後) 執行asp語句命令..... elseif(上一個條件不滿足,重新判斷當什麼什麼時)....then(然後) 執行asp語句命令..... ................... else(否則,最後的) 執行asp語句命令.... end if (結束) |
這麼直截了當的說明,你應該明白了一點點吧?什嗎???還不明白?我們都用執行個體來增強理解它。
執行個體三(1)、建立asp檔案,檔案名稱為:ccc.asp(隨便吧)
插入表單、列表/菜單和按扭,表單方法為“POST”,按扭類型為“提交表單”,“列表/菜單”名稱為“bb”
其它的不用理了。
在<body></body>標籤中間敲入以語句:
<% if request.form("bb")=1 then response.write"你好!你是普通網友!" elseif request.form("bb")=2 then response.write"你好!你是進階站友!" elseif request.form("bb")=3 then response.write"你好!你是管理員!" else response.write"很抱歉!我不知道你是誰!" end if %> |
完整代碼為:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>無標題文檔</title> </head> <body> <% if request.form("bb")=1 then response.write"你好!你是普通網友!" elseif request.form("bb")=2 then response.write"你好!你是進階站友!" elseif request.form("bb")=3 then response.write"你好!你是管理員!" else response.write"很抱歉!我不知道你是誰!" end if %> <form name="form1" method="post" action=""> <select name="bb" id="bb"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="0">0</option> </select> <input type="submit" name="Submit" value="提交"> </form> </body> </html> |
按“F12”鍵預覽,選擇“1”時,頁面將輸出:你好!你是普通網友!
選擇“2”時,頁面將輸出:你好!你是進階網友!
選擇“3”時,頁面將輸出:你好!你是管理員!
選擇“0”時,頁面將輸出:很抱歉!我不知道你是誰!
這個例子使用到了elseif子句,以便在多個條件中進行選擇,你可以任意添加多個elseif子句。
本例用到一個“response.write”的對象向用戶端輸出資料,稍後將講到它。
也可以用if....then....else來按制HTML代碼的輸出(隱藏和顯示)
<% if request.form("bb")=1 then%> 你好!你是普通網友! <%elseif request.form("bb")=2 then%> 你好!你是進階站友! <% elseif request.form("bb")=3 then%> 你好!你是管理員! <%else%> 很抱歉!我不知道你是誰! <% end if%> |
2.select case 結構選擇語句
前面介紹的if....then....else結構雖然好用,但是添加太多的elseif子句時,會使代碼變得繁瑣起來。
select case是if...then...else結構的一種變通形式,可使代碼變得簡練易讀。下面例子:
執行個體三(2): 把執行個體三(1)的代碼:
<% if request.form("bb")=1 then response.write"你好!你是普通網友!" elseif request.form("bb")=2 then response.write"你好!你是進階站友!" elseif request.form("bb")=3 then response.write"你好!你是管理員!" else response.write"很抱歉!我不知道你是誰!" end if %> |
修改成:
<% select case request.form("bb") case "1" response.write"你好!你是普通網友!" case "2" response.write"你好!你是進階站友!" case "3" response.write"你好!你是管理員!" case else response.write"很抱歉!我不知道你是誰!" end select %> |
執行結果與執行個體三(1)完全一樣。
可見,select case結構簡結易讀得多,select case結構只在其開始處使用一個僅計算一次簡單測試運算式,並將運算式的結果與每個case的值比較,如果匹配,則執行相關聯的語句塊。select case結構格式如下:
select case <變數>
case <值1>
ASP程式語句1
case<值2>
ASP程式語句2
....
case else
ASP程式語句n
end select
當然也可以用select case語句來按制HTML代碼的輸出(隱藏和顯示)
<% select case request.form("bb")%> <% case "1"%> 你好!你是普通網友! <% case "2"%> 你好!你是進階站友! <%case "3"%> 你好!你是管理員! <%case else%> 很抱歉!我不知道你是誰! <%end select%> |
下一頁