ASP编程入门进阶(十三):Ad & Content Rotator

ASP的强大不仅仅局限于接受和显示的交互,更多的是运用ActiveX 组件进行更强大的Web应用。

那究竟ActiveX组件为何物?它又是如何运作的呢?其实ActiveX Server Components(ActiveX 服务器组件)是一个存在于 WEB 服务器上的文件,该文件包含执行某项或一组任务的代码,组件可以执行公用任务,这样就不必自己去创建执行这些任务的代码。很形象的一句话:运用组件直接采用别人经典的功能强大的程序。只不过这程序已被封装了的。

那具体ActiveX组件是如何产生、如何得来的呢?一般由下面三个路径获得:
1,安装完IIS服务器以后,自带的一些内置组件,如Database Access数据库连接组件。
2,从第三方开发者处获得可选的组件,或者免费或者收费的,如一些上传组件(当然现在有无组件上传)。
3,如果你是一位Web程序开发者,可以使用Visual Basic 、Java 、Visual C++ 、COBOL等程序设计语言来编写你所需要的ActiveX Server Component。这也就是所谓的ASP进行COM(Component Object Model)、COM+开发了。

当然无论是第三方还是自行开发,在使用之前都必须要进行系统的注册。不过这些都是后话。我们现在需要的,是尽快先把ASP自带的一些组件搞懂吧。

不过在使用内置组件之前,先用一个程序检测一下自己机器中的组件支持情况。
引用一段网上流行的“阿江ASP探针”,将下列代码保存为asp文件进行调试查看。

1,objcheck.asp

<%Option Explicit %>
<%
Dim filename
filename=Request.ServerVariables("SCRIPT_NAME")

Dim ObjTotest(14,4)
ObjTotest(0,0) = "MSWC.AdRotator"
ObjTotest(0,1) = "广告轮显组件"
ObjTotest(1,0) = "MSWC.ContentRotator"
ObjTotest(1,1) = "内容轮显组件"
ObjTotest(2,0) = "MSWC.BrowserType"
ObjTotest(2,1) = "浏览器类型显示组件"
ObjTotest(3,0) = "MSWC.NextLink"
ObjTotest(4,0) = "MSWC.Tools"
ObjTotest(5,0) = "MSWC.Status"
ObjTotest(6,0) = "MSWC.Counters"
ObjTotest(7,0) = "MSWC.IISLog"
ObjTotest(8,0) = "MSWC.PermissionChecker"
ObjTotest(9,0) = "Microsoft.XMLDom"
ObjTotest(10,0) = "IISSample.ContentRotator"
ObjTotest(11,0) = "IISSample.PageCounter"
ObjTotest(12,0) = "Scripting.FileSystemObject"
ObjTotest(13,0) = "adodb.connection"

public IsObj,VerObj,TestObj

dim i
for i=0 to 13
on error resume next
IsObj=false
VerObj=""
TestObj=""
set TestObj=server.CreateObject(ObjTotest(i,0))
If IsObject(TestObj) then
IsObj = True
VerObj = TestObj.version
if VerObj="" or isnull(VerObj) then VerObj=TestObj.about
end if
ObjTotest(i,2)=IsObj
ObjTotest(i,3)=VerObj
next

sub ObjTest(strObj)
on error resume next
IsObj=false
VerObj=""
TestObj=""
set TestObj=server.CreateObject (strObj)
If IsObject(TestObj) then
IsObj = True
VerObj = TestObj.version
if VerObj="" or isnull(VerObj) then VerObj=TestObj.about
end if
End sub
%>
<title>Object Check</title>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#cccccc" width=80%>
<tr align=center><td width=40%>组 件 名 称</td><td width=40%>相 关 信 息</td></tr>
<%For i=0 to 13%>
<tr>
<td> <%=ObjTotest(i,0) & " <font color=#888888>" & ObjTotest(i,1)%></font></td>
<td> 
<%
If Not ObjTotest(i,2) Then
Response.Write "<font color=red>不支持</font>"
Else
Response.Write "支持," & left(ObjTotest(i,3),22)
End If%></td>
</tr>
<%next%>
</table>

<FORM action=<%=filename%> method=post>
<input type=text name="classname" size=40>
<INPUT type=submit value=" 确 定 ">
</FORM>

<%
Dim strClass
strClass = Trim(Request.Form("classname"))
If strClass <> "" then
Response.Write "<br>您指定的组件的检查结果:"
Dim Verobj1
ObjTest(strClass)
If Not IsObj then
Response.Write "<br><font color=red>很遗憾,该服务器不支持 " & strclass & " 组件!</font>"
Else
if VerObj="" or isnull(VerObj) then
Verobj1="无法取得该组件版本"
Else
Verobj1="该组件版本是:" & VerObj
End If
Response.Write "<br><font class=fonts>恭喜!该服务器支持 " & strclass & " 组件。" & verobj1 & "</font>"
End If
End if
%>

[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]

如果你可以运行该ASP文件,也就是说你拥有IIS的WEB服务了。既然有IIS,不出意外,我们今天要学的组件AdRotator相信应该也是支持的。
P.S.一般微软自带的大多是MSWC开头,我也一般戏称为Microsoft WC :)

一、AdRotator组件
该组件通常又称广告轮显组件,其功能相当于在网站上建立了一个,符合广告领域标准功能的广告系统。它具有:每次访问ASP页面时,在页面上显示不同的广告内容;跟踪特定广告显示次数的能力以及跟踪客户端在广告上单击次数的能力。

AD Rotator 组件的工作原理是通过读取 AD Rotator 计划文件来完成的,该文件包括与要显示图象文件的地点有关的信息,以及每个图象的不同属性。下面就是一个标准的 AD Rotator 计划文件。

1,类型为txt文本 ,命名为myadrot.txt




redirect gourl.asp
width 88
height 31
border 1
*
http://www.cnbruce.com/images/logo.gif
http://www.cnbruce.com/
CN-Bruce
10

http://www.it365cn.com/images/logo.gif
http://www.it365cn.com
It365cn
10

http://www.blueidea.com/images/logo.gif
http://www.blueidea.com
Blue!dea
10

代码的前四行包含了广告的全局设置:

1,Redirect 指出广告将成为其热连接的URL。但其并非直接跳转的URL,它包含了两个参数的查询字符串:特定广告主页的URL和图象文件的URL。这些值从而可在gourl.asp文件中进行提取,并且与此同时gourl.asp还可以进行其他的处理工作,比如跟踪单击广告的次数、跳转到接受的的广告主页等。
2,width、height、border不用说一看就知道是连接图片的宽、高以及边框线大小。

“*”号表示了分隔符,以及“*”号下面的每四行为一个单位进行描述每个广告的细节。其中分别代表:

1,每个广告的描述包含图象文件的URL
2,广告对象的主页URL(如果广告客户没有主页,则该行为一个连字符“-”,指出该广告没有链接)
3,图象的替代文字
4,及指定该页与其他页交替显示频率的数值。

该文件是用户自创建的文件。它通常用来解析由AdRotator对象发送的查询字符串的脚本,并将用户重定向到与用户所点击的广告所相关的URL。那具体怎么应用该定向文件呢?

2、adrotator.asp
该文件最主要的是连接myadrot.txt文件,并且执行myadrot.txt文件中的信息内容。很简单,两行代码。





<%set myad=Server.CreateObject("MSWC.adrotator")%>
<%=myad.getadvertisement("myadrot.txt")%>

<%set myad=Server.CreateObject("MSWC.adrotator")%>”学过Server对象,相信还记得该对象强大的一个方法,那就是CreateObject。他可用于创建已经注册到服务器上的ActiveX组件实例。那这就表示引用组件MSWC.adrotator了。

<%=myad.getadvertisement("myadrot.txt")%>”Ad Rotator组件支持的唯一方法也就是GetAdvertisement了,它只有一个参数:AdRotator计划文件的名称。注意指向文件的路径是当前虚拟目录的相对路径,物理路径是不允许的。也就是说当前的adrotator.asp和myadrot.txt是在同一目录下了。

然后进行执行该ASP文件,多次刷新,会发现每次的广告确实是在轮显着的。这时再注意点击图片的超级连接地址。比如:




gourl.asp?url=http://www.cnbruce.com/&image=http://www.cnbruce.com/images/logo.gif

很明显我们还需要建立gourl.asp,并且将url参数的值进行提取,再接着跳转到该url地址上。

3、gourl.asp
该页主要功能:提取url参数值,跳转到广告主页。





<%whaturl=request.querystring("url")%>
<%response.redirect whaturl%>


功能很简单就完成。当然,刚才也说了,这个页还可以做其它一些事件:跟踪客户端在广告上单击次数,比如将接受过来的相同的url地址进行记数的累加,就能显示出该网站广告的点击次数,然后和相应广告商拿取相应的费用什么的……呵呵,在早期都要求需要实际点击率的,现在好象不管,只要广告挂那儿就行-_-!

不过,总的说来,这个组件的功能就是这样。你有多个广告商,并且是按比例单独显示,还需要计算实际点击率的时候,用Ad Rotator组件是最好不过。那也就是说视情况而定了。

最后再说下,该组件的实现需要三个文件:重定向文件、引用文件、处理转向文件。

二、Content Rotator组件

正如Ad Rotator为一广告轮显,Content Rotator组件则为内容轮显。
该组件就像一个简化了的Ad Rotator组件,所以其工作原理亦为:通过读取计划文件来完成的网页内容的显示。该计划文件也就是:内容调度文件(Content Schedule File)。

1,类型为txt文本 ,命名为context.txt




%% 3 //后面是注释
<font color=red>ASP编程入门进阶</font>

%% 4 //下面显示表格
<table><tr><td>www.cnbruce.com</td></tr></table>

%% 5
<A HREF="http://www.cnbruce.com">CN-Bruce</A>

该文件的结构比Ad Rotator的调度文件简单,仅需提供要使用的各个文本字符串的列表,由前面加两个百分号(%%)的语句行说明。

为了设置每个条目的比率(决定它出现在返回页面中的频率),在双百分号的后面添加了一个数字。如果其后跟双斜杠(//)就表示为添加的注释。

接着就是通过ASP页面将这些信息按规定完整显示。

2、showcontext.asp




<%
Set MyContent = Server.CreateObject("MSWC.ContentRotator")
Content = MyContent.ChooseContent("context.txt")
Response.Write Content
%>

"Set MyContent = Server.CreateObject("MSWC.ContentRotator")",先建立和Content Rotator组件的联系。

"Content = MyContent.ChooseContent("context.txt")",表示采用Content Rotator组件的有个方法:ChooseContent,并且赋值给变量Content,到最后输出显示结果。

3、showall.asp
以上页面内容个显示是通过Content Rotator组件的ChooseContent方法实现的。此外,该组件还有一方法:GetAllContent。示例如下:




<%
Set MyContent = Server.CreateObject("MSWC.ContentRotator")
Content = MyContent.GetAllContent("context.txt")
Response.Write Content
%>

运行结果会发现context.txt所有内容被解释执行,并且分类之间会自动添加了<hr>水平线。

当然这个方法可以用在随机图片之类的特效页面上。

(0)

相关推荐

  • ASP编程入门进阶(十三):Ad & Content Rotator

    ASP的强大不仅仅局限于接受和显示的交互,更多的是运用ActiveX 组件进行更强大的Web应用. 那究竟ActiveX组件为何物?它又是如何运作的呢?其实ActiveX Server Components(ActiveX 服务器组件)是一个存在于 WEB 服务器上的文件,该文件包含执行某项或一组任务的代码,组件可以执行公用任务,这样就不必自己去创建执行这些任务的代码.很形象的一句话:运用组件直接采用别人经典的功能强大的程序.只不过这程序已被封装了的. 那具体ActiveX组件是如何产生.如何得

  • ASP编程入门进阶(十四):Browser & Linking

    一.Browser Capabilities组件 该组件最主要的作用是:提取识别客户端浏览器的版本信息. 其原理是这样的:当客户端浏览器向服务器发送页面请求时,同时会自动发送一个User Agent HTTP标题,而该标题是一个声明浏览器及其版本的 ASCII 字符串.而Browser Capabilities组件就将User Agent映射到在文件Browscap.ini中所注明的浏览器 , 并通过BrowserType对象的属性来识别客户浏览器. 若该对象在 browscap.ini 文件中

  • ASP编程入门进阶(一):安装配置服务器

    本人的水平有限,难免有疏忽遗漏之处,还望大家批评指正,在此先谢过. ASP编程入门进阶(一):安装配置服务器 鉴于ASP脚本语言是在服务器端IIS或PWS中解释和运行,并可动态生成普通的HTML网页,然后再传送到客户端供浏览的这一特点.我们要在本机上进行调试,那就要求我们的个人电脑具有服务器的功能. 不要看到"服务器"三个字就感到担心:我的机子配置这么底,性能这么差,是不是不能配啊.放心!配个服务器,就是多装个软件,况且就自己一个人用,根本没有必要多虑.那具体的装个什么软件呢?刚才我们

  • ASP编程入门进阶(七):内置对象Server

    Server 对象提供对服务器上的方法和属性的访问 , 其中大多数方法和属性是作为实用程序的功能服务.(IIS HELP翻译)有了 Server 对象,你就可以在服务器上启动 ActiveX 对象例程,并使用 Active Server 服务提供象 HTML 和 URL 编码这样的函数.一,Script.ScriptTimeout在脚本运行超过一段时间之后,即作超时处理.服务器一般的默认脚本运行时间是90秒.你可以从"Internet信息服务"中"默认Web站点"的

  • ASP编程入门进阶(二十):ADO组件之插入数据记录

    简单的显示记录已经掌握,现在需要的就是通过ASP将信息内容插入到数据库中. 一.拥有数据库cnbruce.mdb 本数据库的作用就是用来被插入数据的,可以直接采用上节中已经建立的cnbruce.mdb文件,当然连接打开数据库的文件conn.asp也就顺利引用了. 二.建立输入插入信息的页面平台addit.html 本页的主要作用是:显示一些文本输入框以用来提供输入信息内容提交数据库. 1,addit.html<form action="addit.asp" method=&quo

  • ASP编程入门进阶(二十):ADO组件之查询数据记录

    首先,了解下原理.1,提供文本框进行查询内容的输入2,将查询信息提交页面程序处理3,程序页主要作用:接受查询信息,根据此信息调用特定的SQL查询语句,得出查询结果并能显示. 其实,主要精髓就是SQL语句的写法上.之前的提取为 "select * form whattable where id="&id插入为 "insert into whattable(xx_rs) values(' "&content&" ')"删除为

  • ASP编程入门进阶(二十):ADO组件之显示数据记录

    学习ASP的万里长征就快到终点了:等把ASP的ADO组件搞定.当然这也是最重要的一步,几乎前面所有的学习都是为了这个最终的目的.OK,下面就来详细系统地来一一掌握,步步为营,各个击破. 一,拥有数据库 可以这么说:静态页面和动态页面最大的区别就是采用了数据库.有关一个WEB程序采用数据库和不采用的优越性比较,就不去细细分析了,主要精力还是放在如何使用数据库,如何熟练运用数据库,如何更灵活地运用数据库等等--其中运用操作数据库主要是对数据库内容进行:显示.插入.修改.更新.查询和删除. 这些方法当

  • ASP编程入门进阶(二):认识表单

    说实话,无论是asp,php还是jsp进行网络编程的时候,都离不开和用户的交互.而人机对话的平台,基本上是靠相应的文本.列表框进行输入,然后通过按钮提交送至数据库的.所以学习网络编程就一定要了解这些输入平台相关的东西:表单(form)其基本格式如下:<form name="form1" action="xxx.asp" method="post"> <input type="text" name="

  • ASP编程入门进阶(十二):ASP技巧累加(一)

    一.On Error 语句该语句的作用是:启用或禁用错误处理程序.一般用法如下: On Error Resume NextOn Error GoTo 0 如果在您的代码中未使用On Error Resume Next语句,所发生的运行时错误将显示错误信息,同时,代码的执行也随之终止. 但当你采用它时,就会使程序按照产生错误的语句之后的语句继续执行,或是按照最近一次所调用的过程(该过程含有 On Error Resume Next 语句)中的语句继续运行.这个语句可以不顾运行时错误,继续执行程序,

  • ASP编程入门进阶(四):内置对象Request

    系统学习ASP,就是先从ASP的几大内置对象开始的.一般称五大对象:Request.Response.Server.Session.Application今天先来看看Request对象. 当然一直还没有提到的就是,ASP到底是什么样?我看代码怎么知道是ASP代码?很简单,当看到"<%"和"%>"就表明是ASP,并且两者之间的就是ASP源码. 那为什么要学对象,对象的作用又是如何的?其实ASP所提供的这些可在脚本中使用的内建对象,使用户更容易收集通过浏览器

随机推荐