分享
 
 
 

ASP服务器组件的编程

王朝asp·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

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映射到物理路径则组件找不到该文件夹,无法正常工作。 代码完成后测试之,注意到在每次打开或刷新该页面时,会有一个不同的图形显示在上面。

5.结束语

使用SSC可以大大丰富Web应用的功能、提高编程效率;完成HTML或VBScript等不易完成的任务;封装特定的商业逻辑等。Server Side Component(以及ActiveX)等组件的编程也发展成为一项有利可图的事业。在Internet上可以找到很多有用的组件(免费的或不免费的),有兴趣者可到www.15seconds.com、www.activeserverpages.com、www.serverobjects.com等站点上查看。如果你有一

个新颖有用的组件,也可以发表在这些站点上,说不定你可以因此得到一笔可观的收入呢。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有