摘要:分析留言板系統的模塊功能和程序流程,對實現留言板系統的關鍵技術進行討論,在網站中實現留言功能,涉及使用ASP的內部對象Request從客戶端獲得信息,利用內部對象Response向客戶端輸出信息,使用ASP的數據庫存取組件ADO的內部對象實現對數據庫的各種操作,包括連接數據庫、顯示數據庫的數據、刪除數據庫的數據、添加數據庫的數據等,綜合利用系統的各種編程方法和技巧,可以設計出符合用戶需求的各種動態網站。
關鍵詞:ASP;Access數據庫;留言板;動態網站
中圖分類號:TP312文獻標識碼:A文章編號:1009-3044(2010)01-113-03
Design and Implementation of the Bulletin Board System Based on ASP
ZOU Yu-feng
(Department of Mathematics and Computer Science, Guilin Normal College, Guilin 541001, China)
Abstract: In this paper, the functional module and the program flow are analyzed, the key technology is discussed. The implementation of the bulletin board on Web is concerned with getting information from client by using internal objects Request, outputting information to client by Response, operating the database by ADO technology such as link database, show data, inquire, add, delete and modify records etc. It can be used to design all kinds of dynamic website by the comprehensive utilization of the programming methods and skills.
Key words: ASP; Access database; Bulletin board; Dynamic website
1 概述
隨著網絡技術的不斷發展,網絡應用已經逐步滲透到了人類社會的各行各業。作為網絡世界支撐點的動態網頁技術,日益成為人們關注的熱點。采用動態網頁技術,可以使制作的網站實現更多的功能,如留言板、BBS論壇、網上調查、新聞發布、用戶注冊、用戶登錄等。ASP是設計WEB動態頁面的基礎[1],利用ASP技術,服務器可以執行用VBScript編寫的嵌入HTML文檔中的程序,WEB頁面可以訪問后臺數據庫,使WEB網頁具有強大的交互能力。近年來ASP在國內外得到迅速的推廣和使用。留言板是 Internet 上最基本的交互式網頁,是網站提供的一項基本服務,也是一個和瀏覽者交流、溝通的園地。本文探討了基于ASP技術和Access數據庫,利用 ADO 數據庫訪問技術實現對數據庫的各種管理操作,實現留言板的留言及管理功能的方法。
2 留言板系統分析
2.1 系統模塊結構
留言板系統具有用戶留言和后臺管理兩大模塊,在用戶留言模塊中,可以實現查看留言、發表留言、顯示留言公告等功能;進入后臺管理模塊,要求輸入用戶名和密碼,管理員登錄成功后,可以實現:查看留言、回復留言、刪除留言、發布留言公告等功能,其模塊結構如圖1所示。我們可以在網站主頁中建立“留言板”和“管理區”的超級鏈接,分別鏈接這兩個模塊中。系統工作流程如圖2所示[2]。
2.2 數據庫設計
Access具有界面友好、易學易用、開發簡單、接口靈活等特點,非常適合開發小型網站,因此本系統中采用Access作為后臺數據庫。在Access 2003中新建一個數據庫lyboard.mdb,它包含三張表。admin表,用于存放管理員帳號和密碼;guestbook表,用于存放留言信息;notice表,用于存放管理員發布的留言公告信息。各數據表的結構如表1所示。數據表包含的數據類型豐富,有利于學習各種數據類型的處理方法。
3 系統關鍵技術的具體實現
3.1 連接數據庫的實現
數據庫連接代碼單獨編制成一個文件,放在conn.asp中。首先建立connection對象實例db;數據庫連接使用OLE DB技術[3],其中data source表示數據庫的物理路徑,利用server對象的MapPath方法可以將相對路徑轉換為物理路徑,provider表示數據庫的OLE DB驅動程序;利用Open方法建立與數據庫的連接。conn.asp文件代碼如下:
dim db,constr'聲明變量
set db=server.CreateObject(\"adodb.connection\")'建立connection對象實例db
constr=\"data source=\" server.MapPath(\"data/lyboard.mdb\")
\";provider=microsoft.jet.oledb.4.0\"'定義數據庫連接字符串
db.open(constr)'建立與數據庫的連接
3.2 顯示用戶留言的實現
用戶的留言信息都保存在后臺數據庫lyboard.mdb的數據表guestbook中,要在網頁上顯示用戶留言信息,程序包含以下部分。
第一部分是連接數據庫。用命令,調用conn.asp文件,利用OLE DB技術連接數據庫。
第二部分是建立Recordset對象。首先建立Recordset對象實例rs,再用Open方法打開記錄集,其中Open的第三個參數為1表示“鍵盤指針”在記錄集中可向前或向后移動。代碼如下:
dim rs,strSql'聲明變量
Set rs=Server.CreateObject(\"ADODB.Recordset\")'建立connection對象實例db
strSql =\"Select * From guestbook Order By time DESC\" '根據guestbook表建立查詢,并按time降序排列
rs.Open strSql,db,1'打開記錄集
第三部分是利用一個Do ……Loop循環實現留言記錄的顯示。在循環體中,利用Response對象的Write方法的省略格式<%=rs(\"字段名稱\")%>,在表格中輸出每條留言信息。程序主要代碼如下:
Do WhileNotrs.Eof'如果不是記錄集結尾,就執行循環
……'插入一個表格,在表格中顯示一條留言記錄,代碼詳見表2。
rs.MoveNext '將記錄指針移動到下一條記錄
Loop
該程序段運行效果如圖3所示。
3.3 獲取用戶留言信息的實現
通過在網頁中,插入表單和表單元素,設計與用戶交互界面,獲取用戶留言信息。獲取用戶留言信息的表單設計如圖4所示。
設置表單的action屬性,其格式為
<% '
Dim strName,strContent,strPic '聲明三個變量
strName =Request.Form(\"name\") '獲取留言者昵稱
strContent =Request.Form(\"content\") '獲取留言內容
strPic =Request.Form(\"pic\") '獲取留言者頭像
if name=\"\" or content=\"\"or pic=\"\" then '如果留言者昵稱、頭像和留言內容為空,顯示錯誤提示信息
response.write\"\"
response.End()
end if
'利用Connection對象的Execute方法執行一條Insert語句,向數據表guestbook中添加記錄
DimstrSql
strSql = \"insert into guestbook (name,content,pic) values('\"strName\"','\"strContent\"','\"strPic\"')\"
db.execute(strSql)
%>
3.4 管理員登錄驗證的實現
管理員登錄驗證程序由兩部分組成。
第一部分是插入表單和表單元素,設計與用戶交互界面,獲取管理員帳號和密碼,管理員登錄的表單設計如圖5所示。設置表單的action屬性為空,其格式為
第二部分是檢查管理員帳號和密碼是否正確。首先連接數據庫,建立記錄集,然后判斷帳號和密碼是否和后臺數據庫lyboard.mdb的數據表admin中的信息匹配。程序主要代碼如下:
if request.form(\"username\")<>\"\" then'如果帳號非空
'查詢有無該用戶
sql=\"select username,password FROM admin\"
sql=sql \"Where username='\" Request.form(\"username\") \"' And password='\" Request.form(\"password\") \"'\"
SET rs=db.EXECUTE(sql)
if not rs.eof and not rs.bof then'如果有該用戶
session(\"username\")=rs(\"username\") '保存帳號到session變量中
session(\"password\")=rs(\"password\") '保存密碼到session變量中
response.redirect \"glly.asp\" '引導至glly.asp頁面中
else '如果沒有該用戶,輸出提示信息
response.write \"對不起,用戶名或密碼有誤,請重新登錄\"
end if
end if
3.5 刪除留言的實現
在管理留言主界面中刪除留言要分兩步實現。
第一步是單擊“刪除”的超級鏈接時,將要刪除的留言記錄的編號(ID)傳遞到刪除頁面中,并彈出刪除確認對話框。刪除記錄的超級鏈接為:
\" onClick=\"return confirm('您確定進行刪除操作嗎?')\">刪除
第二步是在del.asp文件中,利用Request對象的QueryString獲取要刪除記錄的ID值,利用Connection對象的Execute方法執行一條Delete語句,向后臺數據庫lyboard.mdb的數據表guestbook中刪除指定的留言記錄。程序主要代碼如下:
Dim id
id=Request.QueryString(\"id\")'獲取從管理留言主界面中傳過來的ID值
strSql =\"Delete From guestbook where id=\" id
db.Execute(strSql)
4 結束語
經測試,系統運行正確。系統通過HTML的表單實現與用戶交互,使用ASP的內部對象Request從客戶端獲得信息,利用內部對象Response向客戶端輸出信息;通過使用ASP的數據庫存取組件ADO的內部對象實現對數據庫的各種操作,包括連接數據庫、顯示數據庫的數據、刪除數據庫的數據、添加數據庫的數據等,綜合利用系統的各種編程方法和技巧,可以設計出符合用戶需求的各種動態網站。
參考文獻:
[1] 尚俊杰.網絡程序設計——ASP[M].3版.北京:清華大學出版社,2009.
[2] 鄒于豐.案例教學法在網絡程序程序設計ASP課程中的應用[J].電腦知識與技術,2008(8):2443-2445.
[3] 方育紅.用ASP和ADO實現Web數據庫動態查詢[J].微計算機信息,2002,18(9):71-72.