ASP服务器组件的编程

<a href='http://www.biancheng88.cn/html/2008-11/ASP-FuWu-269.html'>ASP服务器组件的编程</a><br><br>
                  1.什么是<a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a><a href="http://www.biancheng88.cn/html/special/2008-11/FuWu/" title="服务" target=_blank><B>服务</B></a>器组件<br>
<br>
<a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>(Active Server Page)是当今开发交互式Web页面、Web数据库应用最强大的技术。在其中可以混用HTML、DHTML、<br>
ActiveX、VBScript或JavaScript。当这些技术都无法奏效时(例如进行高密度的数学运算、封装特定的数据库处理逻辑<br>
等),可以使用<a href="http://www.biancheng88.cn/html/special/2008-11/FuWu/" title="服务" target=_blank><B>服务</B></a>器组件(Server SideComponent)进一步扩展ASP的能力。<br>
Server SideComponent实际上是运行在<a href="http://www.biancheng88.cn/html/special/2008-11/FuWu/" title="服务" target=_blank><B>服务</B></a>器上的一个DLL,它可以完成常规DLL所能胜任的任何任务。不同之处是:它由<br>
ASP页面调用、并以Web页面为交互对象,读入用户的输入(Web页面上各输入域的值),处理后返回结果到Web页面。这些<br>
交互当然都要通过Web服务器作为中介。可以用VB、VFP、VC++、C++Builder、Delphi等任意支持COM技术的语言编写。由于<br>
它可以利用<a href="http://www.biancheng88.cn/html/special/2008-11/FuWu/" title="服务" target=_blank><B>服务</B></a>器的任何资源,其功能仅受限于你的想象力。<br>
目前支持ASP的Web服务器有IIS(Internet Information Server,WinNT Server4.0自带)和PWS(Personel Web Server,<br>
用于Win95环境)。并要求安装VisualInterDev中的Server Components:FrontPage Server Extensions、 Active <br>
ServerPages和Client Components:Visual InterDevClient。可以把这些都安装在同一台机器上,这样可以在单机上方便<br>
地编程、调试。<br>
下面用VB5.0开发一个Server Side Component(一个ActiveXDLL),以实现Web页面上的随机图形显示,相信它会为你的站<br>
点增色不少。<br>
<br>
2. Web页面上的随机图形显示<br>
<br>
一个漂亮的图形可以使Web页面更具吸引力,使人流连忘返。但一旦我们的Web页面设 计完成,这个图形也就确定下来。换<br>
言之,除非我们重新修改HTML代码,则每次打开这个页面,看到的都是同样一个图形。那么能否让用户在每次进入我们的<br>
站点时,都能看到不同的画面呢?例如:每次这个Web页面被访问时,从一个包含若干图形文件的文件夹中随机选取一个,<br>
在该页面上显示,使访问该页面的用户每次都会得到不同的视觉享受。<br>
这个要求用HTML、DHTML或VBScript语言无法做到,这里我们用一个ASP服务器组件实现之。<br>
<br>
3.用VB5.0建立ActiveX DLL<br>
<br>
首先在VB5.0中新建一个Project ,类型为ActiveX DLL :设定属性如下:<br>
Project Name:RandShowFile,<br>
ClassModule Name:Randimage<br>
其中类Randimage的代码如下:<br>
Option Explicit<br>
Private mvarFilePath As String 'local copy<br>
Public Property Let FilePath(ByVal vData As String)<br>
'设置文件路径<br>
If Right(vData, 1) = "/" Or Right(vData, 1) = "/" Then<br>
mvarFilePath = vData<br>
Else<br>
If InStr(vData, "/") <> 0 Then<br>
mvarFilePath = vData & "/"<br>
Else<br>
mvarFilePath = vData & "/"<br>
End If<br>
End If<br>
End Property<br>
<br>
Public Property Get FilePath() As String<br>
'取得文件路径<br>
FilePath = mvarFilePath<br>
End Property<br>
<br>
Private Sub Class_Initialize()<br>
mvarFilePath = ""<br>
End Sub<br>
<br>
Public Function Show(Optional ByVal Extension As String) As String<br>
'从指定文件路径中随机选取并返回一个文件名<br>
Dim MyPath As String<br>
Dim MyName As String<br>
Dim List() As String<br>
Dim FileCount As Integer<br>
Dim n As Integer<br>
On Error GoTo badnews<br>
If Len(mvarFilePath) <= 1 Then<br>
Show = "NoFilePathSpecified "<br>
Erase List<br>
Exit Function<br>
Else<br>
If IsMissing(Extension) Then<br>
Extension = "*.*" '如果扩展名没有指定,则默认为*.*<br>
End If<br>
MyPath = mvarFilePath & Trim(Extension) ' Set the path.<br>
MyName = Dir(MyPath, vbNormal) ' Retrieve the first entry.<br>
End If<br>
FileCount = 0<br>
ReDim List(10)<br>
Do While MyName <> "" <br>
List(FileCount) = MyName<br>
FileCount = FileCount + 1<br>
If FileCount >= UBound(List) Then<br>
n = UBound(List) + 10<br>
ReDim Preserve List(n)<br>
End If<br>
MyName = Dir() <br>
Loop<br>
If FileCount >= 1 Then<br>
Randomize ' 初始化rand()函数,否则每次将产生相同的数字<br>
n = Int(FileCount * Rnd()) ' 产生在1 和list1.listcount 之间的随机数.<br>
Show = List(n)<br>
Erase List<br>
Exit Function<br>
Else<br>
badnews:<br>
Show = "NoFileFound"<br>
Erase List<br>
End If<br>
End Function<br>
在编译之前,注意要在此Project中加入一个Module并在其中加入代码<br>
Sub Main()<br>
End Sub<br>
然后在菜单Project | RandShowFile Projectise?引出的对话框中,设Startup<br>
Object为Sub Main。最后在菜单File中,选Make Randimage.dll。到此,我们的SSC<br>
就开发完成,并且它已自动注册在机器上。<br>
<br>
4.在<a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>页面中使用服务器组件<br>
<br>
下面将建立一个ASP页面以测试我们的Server Side Component。<br>
启动Visual InterDev,开始一个新的工程:New Projects,然后选取Web Project Wizard,在Project Name中输入<br>
TestRandimage,点击OK后,Visual InterDev产生一些辅助文件,为新的工程做好准备,然后自动打开该工程。为了方便<br>
测试,拷贝几个图形文件到Images文件夹中,文件类型可以是浏览器支持的任意图形文件,如BMP、TIF、GIF等 。<br>
在该工程中建立<a href="http://www.biancheng88.cn/html/special/2008-11/ASP/" title="ASP" target=_blank><B>ASP</B></a>页面,点击菜单File | New ,在New 对话框中选Files | Active Server Page ,并指定其名字:<br>
Randimage.asp。Visual InterDev将会为我们产生一个空的框架,在其中用手工加入代码。完成后的代码如下<br>
:<br>
<%@ LANGUAGE="VBSCRIPT" %><br>
<html><head><br>
</head><br>
<body><br>
<h5>测试randimage 组件,随机显示一个图形文件<h5>图形文件路径:<br>
<%=server.mappath("images")%><br><br>
<%set<br>
ox=server.createobject("randshowfile.randimage")'实例化组件ox.filepath=serve<br>
r.mappath("images")<br>
%><br>
<img src="<%=ox.filepath&ox.show%>"><br>
<%set ox=nothing '使用后释放组件%><br>
</body><br>
</html><br>
由于Web页面使用的路径(URL)都是虚拟路径(Virtual Directory),必须使用server.mappath()将其转换到物理路径<br>
(Physical Directory)。例如,此处的图形文件夹images的虚拟路径是://Servername/TestRand image/Images(其中<br>
Servername是你的Web<a href="http://www.biancheng88.cn/html/special/2008-11/FuWu/" title="服务" target=_blank><B>服务</B></a>器的名字),其对应的物理路径是C:/Inetpub/wwwroot/TestRandimage/Images 。如果不把<br>
Images映射到物理路径则组件找不到该文件夹,无法正常工作。 代码完成后测试之,注意到在每次打开或刷新该页面时,<br>
会有一个不同的图形显示在上面。<br>
<br>
5.结束语<br>
<br>
使用SSC可以大大丰富Web应用的功能、提高编程效率;完成HTML或VBScript等不易完成的任务;封装特定的商业逻辑等。<br>
Server Side Component(以及ActiveX)等组件的编程也发展成为一项有利可图的事业。在Internet上可以找到很多有用<br>
的组件(免费的或不免费的),有兴趣者可到www.15seconds.comwww.activeserverpages.comwww.serverobjects.com<br>
等站点上查看。如果你有一<br>
个新颖有用的组件,也可以发表在这些站点上,说不定你可以因此得到一笔可观的收入呢。  <br>

                 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值