編程|伺服器|心得 作者;小刀
使用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></td>
<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伺服器上的資料庫
objRs