執行個體學習Dreamweaver MX ASP編程基礎1

來源:互聯網
上載者:User
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%>

下一頁



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.