ASP服務器組件 ASP服務器組件編程心得 使用ASP編程的一大優點是可以使用眾多的服務器組件(ActiveX Server Components)。這些組件提供諸如廣告輪顯(Ad Rotator)、瀏覽器兼容(Browser Capabilities)、數據庫存取(Database Access)、文件超鏈接(Content Linking)、文件存取(File Access)等等功能。使用服務器組件,可以通過非常簡單的方式高效率地完成各種復雜的工作。 一般,ASP的各個組件通常使用 Server.CreateObject 方法來創建。例如,創建一個AD Rotator 組件可用: <% set ad = Server.CreateObjet (“MSWC.AdRotator”) %> 在ASP的各個組件中,ActiveX Data Object(ADO)組件有著極為重要的作用。它是一種可以提供Web頁面設計開發人員快速存取Internet的數據庫,并在用戶端實現網上實時更新顯示的Web數據庫技術;ADO幾乎兼容于各種數據庫系統,而且跨越多種不同的程序語言開發環境。 例如,我們在網上向本公司的客戶群提供各種硬件的升級程序,與此同時,我們希望能夠記錄下客戶的相關資料。在以前,這種Web上的交互操作一般采用CGI來完成,不僅難以書寫和維護,而且對處理器的消耗很大。現在,我們使用ASP的ADO組件,就可以在短短的兩個小時輕輕松松的完成以前需要三天才能完成的開發工作,而且還不必花費太多的時間和精力放在維護上。 首先,我們需要寫一個供用戶填寫資料的表格頁面,或者我們還可以將這個頁面與后面的ASP處理程序放在同一個文件里,只需要我們在<form>代碼中注明Action的對象是本程序(要么就什么都不寫)。 假定我們的程序名是download.html,下面是原代碼: <html> <body> `聲明提交方法及傳遞信息的方式 <form METHOD="POST" ACTION="download.asp"> <font face=arial> <table border="0" align=center> <tr> <td><font color="black" size="2"><b>Name:</b></font></td> <td><input TYPE="text" SIZE="30" NAME="name"></td> </tr> <tr> <td><font color="black" size="2"><b>Telephone:</b></font></ #@62; <td><input TYPE="text" SIZE="30" NAME="telephone"></td> </tr> <td><font color="black" size="2"><b>E-mail:</b></font></td> <td><input TYPE="text" SIZE="30" NAME="email"></td> </tr> <tr> <td><font color="black" size="2"><b>Address:</b></font></td> <td><input TYPE="text" SIZE="30" NAME="address"></td> </tr> <tr> </table> <hr> <table align=center><tr> <td><input TYPE="Submit" VALUE="Submit"></td> <td width=30></td> <td><input TYPE="Reset" VALUE="Reset"></td> </tr></table> </font> </form> </body> </html> 然后,我們開始編寫數據處理程序download.asp。 <script language=vbscript runat=server> `設置緩沖區屬性 response.buffer=true Dim name 判斷有關字段是否為空 if Len(request.form("name"))=0 then name="Not Entered" else 不為空時,利用Response對象讓Server獲取表格中“name”字段內容 name=request.form("name") end if Dim telephone if Len(request.form("telephone"))=0 then telephone="Not Entered" else telephone=request.form("telephone") end if Dim address if Len(request.form("address"))=0 then address="Not Entered" else address=request.form("address") end if 由于我們將采取Email發送的方式將該下載軟件提供給用戶,所以我們必須要求客戶提供有效的Email地址。 Dim email email=request.form("email") `判定客戶填寫的“Email”資料中是否含有特別字符“@” if instr(email,"@")=0 then `若為否,引導客戶至“back.htm”的提示頁面。 response.redirect("back.htm") else 建立數據庫連接通道 Set objConn = Server.CreateObject("ADODB.Connection") 打開需要的數據庫 objConn.Open("download") 創建對象接口 set objRst = Server.CreateObject("ADODB.Recordset") set objRst.ActiveConnection = objConn 設定對數據庫更新數據時的鎖定機制為:數據在更新時并未鎖定其他用戶的動作。 objRst.LockType = 3 數據庫源 objRst.Source = "client" 控制數據更新后過濾下載的數據類型 objRst.CursorType = adOpenKeyset 將從表格內獲取的資料傳送到web服務器上的數據庫 objRst.Open objRst.AddNew objRst("company") = company objRst("name") = name objRst("telephone") = telephone objRst("fax") = fax objRst("email") = email objRst("address") = address objRst.Update objRst.close 關閉連接 objConn.close 下面是利用IIS4.0附帶的Email組件CDONTS發送郵件 Dim objMail 建立一個Email組件 set objMail=Server.CreateObject("CDONTS.NewMail") 郵件發送者的Email地址 objMail.From="me@hotmail.com" 郵件接收者的Email地址 objMail.To=email 郵件的標題 objMail.Subject="Thank you!" 郵件的正文 objMail.Body="This is the software of Virtual Drive 2000 Network." 在郵件里附加文件,“絕對路徑”,“文件名”。若為URL地址,則改為ObjMail.AttachUrl objMail.AttachFile "d:/power/download/vdn2kdm.exe", "vdn2kdm.exe" 發送郵件 objMail.Send 將Email對象從內存中清除 Set objMail=nothing response.write "<p><font face=arial size=3 color=blue><b>Thank you!<br>We have sent the file pass your Email, please wait...</b></font></p>" end if </script> 到這里,一個很不錯的web數據庫交互操作程序就大功告成,而且,它還帶有向客戶發送Email的功能,方便客戶利用Email下載較大的文件。 |
溫馨提示:喜歡本站的話,請收藏一下本站!