ASP服务器组件的编程

编程|服务器

重庆出版社电脑中心 陈刚
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环境)。并要求安装VisualInterDev中的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:\Inetpub\wwwroot\TestRandimage\Images 。如果不把
Images映射到物理路径则组件找不到该文件夹,无法正常工作。 代码完成后测试之,注意到在每次打

时间: 2024-11-02 05:32:49

ASP服务器组件的编程的相关文章

ASP服务器组件编程心得

编程|服务器|心得 作者;小刀 使用ASP编程的一大优点是可以使用众多的服务器组件(ActiveX Server Components).这些组件提供诸如广告轮显(Ad Rotator).浏览器兼容(Browser Capabilities).数据库存取(Database Access).文件超链接(Content Linking).文件存取(File Access)等等功能.使用服务器组件,可以通过非常简单的方式高效率地完成各种复杂的工作. 一般,ASP的各个组件通常使用 Server.Cre

ASP脚本组件实现服务器重启_应用技巧

大家知道直接使用ASP是不能够重启服务器的,这时我们需要制作一个组件来实现功能,ASP通过这个组件调用系统API,然后按照不同的重启和关机方式进行操作! 下面先说COM的制作,在VB中新建一工程,当然是AceiveX dll的. 1)先修改工程属性,在工程属性窗口将工程名称改为system,在类模块窗口将模块名称改为contral,保存工程; 2)然后添加一个模块,用来声明需要使用的API和常数,下面是模块中的内容.Declare Function ExitWindowsEx Lib "user

ASP脚本组件实现服务器重启

大家知道直接使用ASP是不能够重启服务器的,这时我们需要制作一个组件来实现功能,ASP通过这个组件调用系统API,然后按照不同的重启和关机方式进行操作! 下面先说COM的制作,在VB中新建一工程,当然是AceiveX dll的. 1)先修改工程属性,在工程属性窗口将工程名称改为system,在类模块窗口将模块名称改为contral,保存工程; 2)然后添加一个模块,用来声明需要使用的API和常数,下面是模块中的内容. Declare Function ExitWindowsEx Lib "use

在Visual J++中编写ASP COM组件

visual Java是一种以网络为中心的编程语言,许多只使用ASP脚本难以完成的任务可以用Java轻松地实现.同时,扩展ASP应用最好的方法莫过于加入COM组件.那么,可以利用Java为ASP开发组件吗?本文通过实例,说明了在Visual J++环境下开发COM组件的具体过程. 一.概述 自Java问世以来,各种开发工具.开发环境不断出现.这些环境和工具面向不同层次的用户,具有各自的优点.那么,使用Visual J++作为Java开发平台又有哪些优点呢?粗略地讲,这些优点包括: 熟悉的开发环境

ASP 3.0高级编程(四十四)

编程|高级 第10章 ASP与客户端数据 在一本ASP专著中讨论客户端数据,这与服务器端的ASP编程是否矛盾?情况并非如此,因为我们至今尚未碰到只从事服务器端编程的ASP程序员.虽然ASP是一项服务器端技术,但可以想象,编程人员不可能仅仅使用ASP进行编程.从事ASP编程的Web开发人员,仍然需要与客户端数据进行交互.因此,围绕着ASP构建一个应用程序时必须考虑整个应用程序的情况,这也意味着必须考虑客户端.为了获得一个运行良好.快速响应的应用程序,需要很好地使用客户端数据.本章将讨论如何在客户端

ASP 3.0高级编程(十七)

编程|高级 第5章 脚本运行期库对象前面章节已经介绍了ASP如何使用在服务器上定义的对象的实例,充分利用所提供的方法和属性扩展ASP的性能.有一系列的对象可供使用,包括脚本对象和标准IIS/ASP安装的组件,以及自己创建的或者从其他供应商处购买的对象.也可以在互联网上各种网站免费下载对象,并在自己的页面上使用.这一章将讨论由ASP脚本环境提供的一般称为"脚本运行期库"(Scripting Runtime Library)的对象.这些对象通过正在使用的脚本引擎提供给代码,与ASP脚本程序

ASP 3.0高级编程(二十三)

编程|高级 第6章 活动服务器组件在前几章中,我们已经研究了两类不同的对象:一类是ASP对象模型的内置部分,另一类是脚本运行期库提供的对象.本章将介绍第三类能用于ASP的对象,取名为活动服务器组件(或者就称为服务器组件).这些组件在很多场合下就如同在浏览器或在像Visual Basic编程环境中用于客户端脚本中的传统ActiveX控件一样,但是这些组件可在服务器上运行,而不是一个只能运行在客户机上的对象.现在的问题是:这些组件来自哪里?其中一部分是由常规的ASP/IIS安装程序提供的,而另一部分

ASP 3.0高级编程(二十九)

编程|高级 6.3.2 SA-FileUP组件在很多Web网站上,一个常规要求是,服务器接受客户机发送的文件的能力如何?在IIS 4.0里,Microsoft提供了一个名为Posting Acceptor组件完成这项工作,IIS 5.0和ASP 3.0的标准安装中没有该组件,如果安装Site Server Express的话,则需要包含这一组件.可以从Microsoft Web网站http://www.microsoft.com/windows/software/webpost/post_acc

第十五篇 常用的ASP ActiveX组件

当你用 ASP 编写服务器端应用程序时,必须依靠 ActiveX 组件来强大 Web 应用程序的功能,譬如:你需要连接数据库,对数据库进行在线操作等等,继上篇介绍了 AD Rotator 组件后,本篇将接着给大家介绍其它一些常用的 ASP ActiveX 组件的使用方法. 最近仍有不少朋友来信问我, ASP 是否只能在 Microsoft IIS 上运行,是否可以在非 NT 平台上运作?本来这个问题我已经回答过很多遍了 : 我只是听说过有某种可以支持的软件,却从没见过.但一些热情的朋友仍然孜孜不