【摘要】隨著web技術的快速發展,動態網頁已經成為網頁的主流。在眾多的動態網頁開發技術中,asp以其簡單、易學、易用而著稱。本文結合實例,對asp動態網頁中兩種常見參數傳遞類型進行分析及闡述。
【關鍵詞】asp;動態網頁;表單;參數;傳遞
筆者所在教研室已經連續若干年為高職計算機專業學生開設asp動態網站設計與開發課程,取得了比較理想的效果。學生能設計編寫一些普通的動態網頁文件,也能通過網頁設計摸板設計簡易網站。在教學過程中,筆者發現參數傳遞作為一項重要技術在動態網頁中被普遍應用,也是教學中的重點及難點。但教材中往往只是寥寥數筆帶過,未加詳細說明,以致大部分學生對此一知半解,無法融會貫通地運用。鑒于此,本文就asp教學中最常見的兩種參數傳遞類型進行詳細的介紹及分析。
1.表單(form)提交中的參數傳遞
表單在網頁中非常多見,比如我們在上網時經常會碰到的注冊個人信息、搜索站點內容、bbs中留言等,這些都可以用asp提供的表單來實現。表單最常用的語法如下:
lt;form name=form的名稱, action=處理輸入數據的程序的url, method=輸入的數據傳送到服務器的方式,取值為post或getgt;
form表單元素(如文本框、單選框、復選框和下拉選擇框等)
lt;/formgt;
當表單填寫完畢后,單擊提交按鈕就可以將客戶端的信息送到服務器端的表單處理程序進行處理了。教師在介紹表單提交的時候,通常先介紹post這種傳輸方式,此方式將表單內各字段名稱與其內容放置在html表頭(header)內作為http消息的實體內容一起傳送給服務器端交由action中的程序處理,該程序會通過標準輸入方式,將表單的數據讀出并加以處理,而用戶是看不到這個過程的。而第二種方式:get,通過url請求來傳遞用戶的數據,即將表單內各字段名稱與其內容,以成對的字符串連接,置于action屬性所指程序的url后,再將其送到服務器。其格式為“處理程序的url?字段1=輸入數據1amp;字段2=輸入數據2amp;…”,其中?代表url地址的結尾與數據參數的開端,參數與參數之間利用一個連接符amp;來區分。字母數字字符原樣發送,但空格轉換為\"+\"號,其它符號轉換為%xx,其中xx為該符號以十六進制表示的ascll值。當表單通過get方式傳送表單數據時,提交的數據會作為參數來傳遞,用戶可以在地址欄中看到參數的具體情況。下面我們以個人信息表單提交為例進行說明。
圖1所示為表單提交數據的頁面,action中的文件通過request.querystring(‘字段名’)接收表單提交的數據,在地址欄中顯示參數,各參數用amp;連接。
圖1 表單提交數據的頁面
2.列表超鏈接中頁面參數的傳遞
動態網頁中列表非常常見。列表中的每一項都設置成超鏈接,當點擊各個超鏈接時,會連接到名稱相同的一個頁面,此時地址欄中除了顯示頁面名稱外,后面還帶有傳遞的參數,根據參數值的不同而顯示不同的頁面內容。這是動態網頁設計中的常用方法,不但減少了網站中文件的數目,減小了文件的冗余度,而且提高了運行速度。例如新聞標題列表頁面中,包含新聞標題列表超鏈接,點擊每個超鏈接會連接到不同的新聞內容頁面,此時會把新聞編號作為網頁中傳遞的參數。再比如圖書銷售頁面,會把圖書編號作為網頁中傳遞的參數。在列表中選擇要購買的圖書的超鏈接(第一本),會連接到圖書訂購頁面,頁面中顯示第一本圖書的相關信息:作者、出版社、出版日期、頁數、單價、圖書封面等(如圖2所示)。點擊其它圖書的超鏈接,會連接到對應其他圖書的相關信息頁面。一般來說,作為參數傳遞的字段在后臺的數據庫表中要保證其值的唯一性,即沒有重復值。下面就以圖書銷售頁面為例來進行說明。
在圖書銷售主頁booksaling.htm頁面中點擊右側今日排行榜中的書名列表超鏈接,會連接到名為bookinfodetail.asp的圖書訂購頁面,頁面地址欄中在文件名后顯示 bookid參數。此例中,bookid為后臺數據庫中圖書信息表的圖書編號字段,將作為參數在booksaling.htm頁面中通過點擊超鏈接傳遞到bookinfodetail.asp頁面中。
booksaling.htm頁面主要代碼如下:
Set cn=Server.CreateObject(\"ADODB.Connection\")
cn.connectionstring=\"Provider=SQLOLEDB;UID=sa;pwd=123;\" amp; _
“database=圖書銷售;Data Source= (local)”
cn.Open " //連接數據庫
‘創建ADO對象
Set rest=Server.CreateObject(\"ADODB.Recordset\")
Set rs.ActiveConnection = cn
rs.CursorType =1
rs.LockType = 3
querystr = “SELECT TOP 5 訂購記錄.book_id,book_name,sum(book_sum) as sale_total “ _
amp; “from 訂購記錄,圖書信息 where 訂購記錄.book_id=圖書信息.book_id “ _
amp; “group by 訂購記錄.book_id,book_name “ _
amp; “order by sale_total DESC”
rs.Open querystr " "http://查詢圖書信息的查詢語句,其中包含圖書編號bookid字段
n=1
while not rs.eof
response.write \"lt;a target=_Blank href=BooksInfoDetail.asp?BookID=”
response.write rs.fields(0)
response.write “gt;”
response.write n
response.write “.”
response.write rs.fields(1)
response.write “lt;/agt;lt;brgt;”
n=n+1
rs.movenext
wend
rs.close
cn.close
set rs=nothing
set cn=nothing
bookinfodetail.asp頁面主要代碼如下:
lt;%
if request(“bookid”)lt;gt;”” then
‘建立數據庫連接
Set cn=Server.CreateObject (\"ADODB.Connection\")
cn.connectionstring=\"Provider=SQLOLEDB;UID=sa;pwd=123;\" amp; _
“database=圖書銷售;Data Source=(local)”
cn.Open
querystr = “SELECT * FROM 圖書信息 WHERE book_id = \" amp; Request(\"bookid\")
‘創建Recordset對象
Set rs=Server.CreateObject (\"ADODB.Recordset\")
Set rs.ActiveConnection = cn
rs.CursorType =1
rs.LockType = 3
‘訪問數據庫獲得圖書記錄
rs.open querystr
%gt;
圖2
3.結束語
雖然如今是.net技術流行的時代,但是Asp技術以其易學易用的特點在眾多高等院校中仍被廣泛應用,動態網頁中參數的傳遞是動態網頁技術中的重點和難點,如果能很好的掌握其方法,對學生設計編寫動態網站代碼將有很大的幫助。
參考文獻
[1]ASP 動態網站開發實踐教程[M].清華大學出版社.
[2]SQL SERVER數據庫開發經典實例精解[M].機械工業出版社.