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"
邮件