Database 版 (精华区)

发信人: starstar (我删我删,整理版务中), 信区: Database
标  题: ASP服务器组件的编程
发信站: 哈工大紫丁香 (2001年04月09日19:55:32 星期一), 站内信件

1.什么是ASP服务器组件
ASP(Active Server Page)是当今开发交互式Web页面、Web数据库应用最强大的技术。
在其中可以混用HTML、DHTML、ActiveX、VBScript或JavaScript。当这些技术都无法奏
效时(例如进行高密度的数学运算、封装特定的数据库处理逻辑等),可以使用服务器
组件(Server
SideComponent)进一步扩展ASP的能力。
Server SideComponent实际上是运行在服务器上的一个DLL,它可以完成常规DLL所能胜
任的任何任务。不同之处是:它由ASP页面调用、并以Web页面为交互对象,读入用户的
输入(Web页面上各输入域的值),处理后返回结果到Web页面。这些交互当然都要通过
Web服务器作为中介。可以用VB、VFP、VC++、C++Builder、Delphi等任意支持COM技术的
语言编写。由于它可以利用服务器的任何资源,其功能仅受限于你的想象力。
目前支持ASP的Web服务器有IIS(Internet Information Server,WinNT
Server4.0自带)和PWS(Personel Web Server,用于Win95环境)。并要求安装Visual
InterDev中的Server
Components:FrontPage Server Extensions、 Active ServerPages和Client
Components:Visual InterDevClient。可以把这些都安装在同一台机器上,这样可以在
单机上方便地编程、调试。
下面用VB5.0开发一个Server Side Component(一个ActiveXDLL),以实现Web页面上的
随机图形显示,相信它会为你的站点增色不少。
2. Web页面上的随机图形显示
一个漂亮的图形可以使Web页面更具吸引力,使人流连忘返。但一旦我们的Web页面设
计完成,这个图形也就确定下来。换言之,除非我们重新修改HTML代码,则每次打开这
个页面,看到的都是同样一个图形。那么能否让用户在每次进入我们的站点时,都能看
到不同的画面呢?例如:每次这个Web页面被访问时,从一个包含若干图形文件的文件夹
中随机选取一个,在该页面上显示,使访问该页面的用户每次都会得到不同的视觉享受

这个要求用HTML、DHTML或VBScript语言无法做到,这里我们用一个ASP服务器组件实现
之。
3.用VB5.0建立ActiveX DLL
首先在VB5.0中新建一个Project ,类型为ActiveX DLL
:设定属性如下:
Project Name:RandShowFile,
ClassModule Name:Randimage
其中类Randimage的代码如下:
Option Explicit
Private mvarFilePath As String 'local copy
Public Property Let FilePath(ByVal vData As String)
'设置文件路径
If Right(vData, 1) = "/" Or Right(vData, 1) = "\" Then
mvarFilePath = vData
Else
If InStr(vData, "/") <> 0 Then
mvarFilePath = vData & "/"
Else
mvarFilePath = vData & "\"
End If
End If
End Property
Public Property Get FilePath() As String
'取得文件路径
FilePath = mvarFilePath
End Property
Private Sub Class_Initialize()
mvarFilePath = ""
End Sub
Public Function Show(Optional ByVal Extension As String) As String
'从指定文件路径中随机选取并返回一个文件名
Dim MyPath As String
Dim MyName As String
Dim List() As String
Dim FileCount As Integer
Dim n As Integer
On Error GoTo badnews
If Len(mvarFilePath) <= 1 Then
Show = "NoFilePathSpecified "
Erase List
Exit Function
Else
If IsMissing(Extension) Then
Extension = "*.*" '如果扩展名没有指定,则默认为*.*
End If
MyPath = mvarFilePath & Trim(Extension) ' Set the path.
MyName = Dir(MyPath, vbNormal) ' Retrieve the first entry.
End If
FileCount = 0
ReDim List(10)
Do While MyName <> ""
List(FileCount) = MyName
FileCount = FileCount + 1
If FileCount >= UBound(List) Then
n = UBound(List) + 10
ReDim Preserve List(n)
End If
MyName = Dir()
Loop
If FileCount >= 1 Then
Randomize ' 初始化rand()函数,否则每次将产生相同的数字
n = Int(FileCount * Rnd()) ' 产生在1 和list1.listcount 之间的随机数.
Show = List(n)
Erase List
Exit Function
Else
badnews:
Show = "NoFileFound"
Erase List
End If
End Function
在编译之前,注意要在此Project中加入一个Module并在其中加入代码
Sub Main()
End Sub
然后在菜单Project | RandShowFile Projectise?引出的对话框中,设Startup
Object为Sub Main。最后在菜单File中,选Make Randimage.dll。到此,我们的SSC
就开发完成,并且它已自动注册在机器上。
4.在ASP页面中使用服务器组件
下面将建立一个ASP页面以测试我们的Server Side Component。
启动Visual InterDev,开始一个新的工程:New Projects,然后选取Web
Project
Wizard,在Project Name中输入TestRandimage,点击OK后,Visual
InterDev产生一些辅助文件,为新的工程做好准备,然后自动打开该工程。为了方便
测试,拷贝几个图形文件到Images文件夹中,文件类型可以是浏览器支持的任意图形
文件,如BMP、TIF、GIF等 。
在该工程中建立ASP页面,点击菜单File | New ,在New
对话框中选Files | Active
Server Page ,并指定其名字:Randimage.asp。Visual
InterDev将会为我们产生一个空的框架,在其中用手工加入代码。完成后的代码如下

<%@ LANGUAGE="VBSCRIPT" %>
<html><head>
</head>
<body>
<h5>测试randimage 组件,随机显示一个图形文件<h5>图形文件路径:
<%=server.mappath("images")%><br>
<%set
ox=server.createobject("randshowfile.randimage")'实例化组件ox.filepath=serve

r.mappath("images")
%>
<img src="<%=ox.filepath&ox.show%>">
<%set ox=nothing '使用后释放组件%>
</body>
</html>
由于Web页面使用的路径(URL)都是虚拟路径(Virtual
Directory),必须使用server.mappath()将其转换到物理路径(Physical
Directory)。例如,此处的图形文件夹images的虚拟路径是://Servername/TestRand

image/Images(其中Servername是你的Web服务器的名字),其对应的物理路径是C:\In

etpub\wwwroot\TestRandimage\Images
。如果不把Images映射到物理路径则组件找不到该文件夹,无法正常工作。
代码完成后测试之,注意到在每次打开或刷新该页面时,会有一个不同的图形显示在
上面。5.结束语
使用SSC可以大大丰富Web应用的功能、提高编程效率;完成HTML或VBScript等不易完
成的任务;封装特定的商业逻辑等。Server Side
Component(以及ActiveX)等组件的编程也发展成为一项有利可图的事业。在Internet

上可以找到很多有用的组件(免费的或不免费的),有兴趣者可到www.15seconds.com
、www.activeserverpages.com、www.serverobjects.com等站点上查看。如果你有一
个新颖有用的组件,也可以发表在这些站点上,说不定你可以因此得到一笔可观的收
入呢。 

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: ir.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.208毫秒