hinapub.com 下载 第6章活动服务器组件 179 没有指明广告条在浏览器中显示的实际时间。注意每一个广告条的实际出现是随机的, 并被修改以达到需要的比率 下面看一个重新定向文件的例子 REDIRECT AaRotFiles/ad redirect. asp HEIGHT 50 dRotFiles/wrox. gif p://www.wroxcom Better Books Erom Wrox Press AdRotFiles/lunar. gif ttp://www.going-to-the-moon.com/store.asp Acme Lunar Boost Supplies 2. Ad rotator组件的成员 Ad rotator组件含有一个方法和三个属性,方法如表6-2所示。 表6-2 Ad Rotator组件的方法及说明 Get Advertisement(schedule file)使用指定的 schedule file中的信息创建并返回一个字符串,这个字符串 含有把下一个合适的图像插入到该页面所需的HTML 属性如表6-3所 表6-3 Ad Rotator组件的属性及说明 Border 整数型,是指广告条边界的宽度(以像素为单位),若未设定,则采用文 件第一部分设定的值 Clickable 布尔型,规定广告栏图像文件是否显示为一个超级链接,缺省值为True Target Fram 字符串型,目标框(fame)的名字。如果用户点击图像文件的话,这个框 用于显示广告主的页面。如果忽略的话,页面装载到当前浏览器的目标框 或窗口内,取代含有广告栏图像的页面,这个属性也能设置成一个标准的 HTML框标识:top、new、 child、self、 parent和bank 3.使用 Ad rotator组件 下面的代码说明了 Ad rotator组件的使用。创建了组件实例之后,设置属性参数并调用 GetAdvertisement方法,指定调度文件的相对物理路径。由组件返回的HTML代码通过使用 Response.Writ方法插入到页面中 QUOT Chr(34) et objAaRot Server Createobject('MSwC. AdRotator) objAdRot. Border=O no border objAdRot. Clickable=TRUE 1B a hyperlink bjAdRot. TargetPrame=*TARGET='& QUOt&.blank.& QUOT load into new window named fraAdFrame strHTML- objAdRot GetAdvertisement("AdRotFiles \ad_schedule. txt) Response. Write(strhTML p:th± nto the page
没有指明广告条在浏览器中显示的实际时间。注意每一个广告条的实际出现是随机的, 并被修改以达到需要的比率。 下面看一个重新定向文件的例子: 2. Ad Rotator组件的成员 Ad Rotator组件含有一个方法和三个属性,方法如表 6 - 2所示。 表6-2 Ad Rotator组件的方法及说明 方 法 说 明 G e t A d v e r t i s e m e n t (s c h e d u l e _ f i l e) 使用指定的s c h e d u l e _ f i l e中的信息创建并返回一个字符串,这个字符串 含有把下一个合适的图像插入到该页面所需的 H T M L 属性如表6 - 3所示。 表6-3 Ad Rotator组件的属性及说明 属 性 说 明 B o r d e r 整数型,是指广告条边界的宽度 (以像素为单位),若未设定,则采用文 件第一部分设定的值 C l i c k a b l e 布尔型,规定广告栏图像文件是否显示为一个超级链接,缺省值为 Tr u e Ta rg e t F r a m 字符串型,目标框( f r a m e )的名字。如果用户点击图像文件的话,这个框 用于显示广告主的页面。如果忽略的话,页面装载到当前浏览器的目标框 或窗口内,取代含有广告栏图像的页面,这个属性也能设置成一个标准的 H T M L框标识:_ t o p、_ n e w、_ c h i l d、_ s e l f、_ p a r e n t和_ b l a n k 3. 使用Ad Rotator组件 下面的代码说明了 Ad Rotator组件的使用。创建了组件实例之后,设置属性参数并调用 G e t A d v e r t i s e m e n t方法,指定调度文件的相对物理路径。由组件返回的 H T M L代码通过使用 R e s p o n s e . Wr i t e方法插入到页面中。 第 6章 活动服务器组件计计179 下载
180s:;商程 Chinaopub coM 下载 GetAdvertisement方法的参数是相对于当前目录或web网站根目录的调度文件物理路径和 文件名。在上面的代码中,此文件取名为 Ad files,位于包含正在运行的ASP页面的当前目 录下的子目录中。如果这个文件存入Web网站根目录下的 Adrotfiles子目录,应使用 “ \AdRotFiles\ My AdFile txt” 调用 Getadvertisement方法时,返回能插入网页中用于创建广告栏的HTML代码,对于上 例中的旋转调度文件中的第一个广告栏,可以得到下列代码 <A HREF="/AdRotFiles/AdRedirect asp? url-http://www.wrox.com/&image-/adrotfiles/adpics/wrox.gif'> <IMG SRC="/AdRotFiles/AdPics/wrox ALT:"Better Books from Wrox Press. WIDTH=4 40 HEIGHT= 60 BORDER=0></A> 可以看到在常规的<A>标记中放置了图像文件,HREF属性设置为重定向文件的名称 AdRedirect. asp,同时广告主的主页URL和所用的图像添加到查询字符串中,因此当用户点击 告栏时,重定向文件将在服务器上载入并运行。 4.重定向文件 重定向文件可以是一个ASP页面、一个 ISAPI DDL或者是一个CGI应用程序,无论是哪 种,它必须能够接受和辨别广告主的主页URL以及图像名参数。它检查这些值并决定下一步 该做什么。例如通常会把用户重新定向到与此广告栏有关的URL,这一点使用下面的 Ⅴ SCript代码很容易实现 Response. Redirect Request Querystring ('url") 然而,重新定向文件提供给我们的不仅仅是这些。例如可以统计点击每个广告的用户数 量,如果根据点击数收取广告费用的话,这将显得尤其有用。也可以用本章后面介绍的 Counters组件来完成这项工作 get the URl of the advertiBer'B target strAdvertiserURL, Request Querystring(url") If Instr(strAdvertiserURL,"wrox. com")TI th⊥B⊥ g an advert for the wrox prebe bjCount rs Increment("wrox ') esponse. Redirect strAdvertiserURL End If If Instr(strAdvertiseruRl, 'going-to-the-moon')Then thiB e an advert for the Lunar objcounters. Increment('lunar) Response. Clear Response. Redirect strAdvertiserURL. End If .ame£ or other advert⊥BexB 查询字符串包含图像文件名时,在脚本中也要考虑这一点,如果在调度文件中,同 告主有三种不同的图像,可以对每个图像单独地跟踪访问次数 If Instr(strAdvertiserURL,wrox. com)Then thLa⊥ B an advert for the wrox pre自a⊥te Select Case Request QueryString("image)
G e t A d v e r t i s e m e n t方法的参数是相对于当前目录或 We b网站根目录的调度文件物理路径和 文件名。在上面的代码中,此文件取名为 A d R o t F i l e s,位于包含正在运行的A S P页面的当前目 录下的子目录中。如果这个文件存入 We b网站根目录下的 A d R o t F i l e s子目录,应使用 “\ A d R o t F i l e s \ M y A d F i l e . t x t”。 调用G e t A d v e r t i s e m e n t方法时,返回能插入网页中用于创建广告栏的 H T M L代码,对于上 例中的旋转调度文件中的第一个广告栏,可以得到下列代码: 可以看到在常规的 < A >标记中放置了图像文件, H R E F属性设置为重定向文件的名称 A d R e d i r e c t . a s p,同时广告主的主页 U R L和所用的图像添加到查询字符串中,因此当用户点击 广告栏时,重定向文件将在服务器上载入并运行。 4. 重定向文件 重定向文件可以是一个A S P页面、一个ISAPI DDL或者是一个C G I应用程序,无论是哪一 种,它必须能够接受和辨别广告主的主页 U R L以及图像名参数。它检查这些值并决定下一步 该做什么。例如通常会把用户重新定向到与此广告栏有关的 U R L,这一点使用下面的 V B S c r i p t代码很容易实现。 然而,重新定向文件提供给我们的不仅仅是这些。例如可以统计点击每个广告的用户数 量,如果根据点击数收取广告费用的话,这将显得尤其有用。也可以用本章后面介绍的 C o u n t e r s组件来完成这项工作。 查询字符串包含图像文件名时,在脚本中也要考虑这一点,如果在调度文件中,同一广 告主有三种不同的图像,可以对每个图像单独地跟踪访问次数。 180计计ASP 3 高级编程 下载
inapub.com 第6活动原务器组件18 下载 objcounters. Increment(wrox books") objCounters. Increment('wroxsite) Case Else objcounters. Increment('wroxother) End select Response. Clear Response. Redirect strAdvertiserURL. End if 5.一个 Ad rotater示例页面 本章提供的示例文件包括一个 Ad Rotator组件演示程序,它能够从前面见过的ASP installable Components主菜单中打开。页面的上部显示的是一个由名为 ad schedule. txt的旋转调 文件定义的广告(可在本章示例目录下的 Ad rotfiles子目录中找到 ad shedule. txt),如图6-5所 The Ad Rotator and Counters Cor This is the selected advertisement ASR SERVER 1 EXtras The number of click-throughs recdroeasoTar an wron press Change the values of the Counters: Contr Set wiox Preas 3. 0) 图6-5 AD Rotating页面示例 使用的代码前面已经讨论过,这里在调度文件中仅增加了另外一些条目,以便更清楚地 显示载入页面时的广告的变化情况。如果点击一个广告,将运行名为 ad redirect. asp的重定向 文件中的代码,并且相应的广告主的页面在新的窗口里打开。完成该工作的代码和前面见到 的相同。 在重定向文件中,可使用计数器(由 Counters:组件创建)实例存储每个广告的点击次数a If Instr(strAdvertiserURL rox") Then objCounters. Increment( wrox) Response. Redirect strAdvertiseruRL 此页面的其余部分演示了 Counters组件的作用,下面介绍该组件
5. 一个Ad Rotater示例页面 本章提供的示例文件包括一个 Ad Rotator组件演示程序,它能够从前面见过的 A S P Installable Components主菜单中打开。页面的上部显示的是一个由名为 a d _ s c h e d u l e . t x t的旋转调 度文件定义的广告(可在本章示例目录下的Ad RotFiles子目录中找到a d _ s h e d u l e . t x t ),如图6 - 5所 示。 图6-5 AD Rotating 页面示例 使用的代码前面已经讨论过,这里在调度文件中仅增加了另外一些条目,以便更清楚地 显示载入页面时的广告的变化情况。如果点击一个广告,将运行名为 a d _ r e d i r e c t . a s p的重定向 文件中的代码,并且相应的广告主的页面在新的窗口里打开。完成该工作的代码和前面见到 的相同。 在重定向文件中,可使用计数器 (由C o u n t e r s组件创建)实例存储每个广告的点击次数。 此页面的其余部分演示了C o u n t e r s组件的作用,下面介绍该组件。 第 6章 活动服务器组件计计181 下载
182 ASP3高级编程 Chinapub.com 下载 624 Counters组件 Counters组件能用于创建、存储、递增和检索每个计数器的值。不要把它和本章后面将要 介绍的 Page counter组件混淆, Counters组件能用于支持任何种类数据的统计。 个计数器含有一个整数值,能通过 Counters组件的方法进行运算。使用Set方法设置计 数器的指定值,用Get方法检索计数器中的值,使用 Increment方法使计数器的值加1,使用 Remove方法删除一个计数器。所有的计数器的值存储在一个名为 Counters txt的文本文件中, 可在 Counters . dl组件所在的目录中找到该文件。 1. Counters组件的成员 Counters组件提供了用于维护每个计数器组件中数值的四个方法,如表6-4所示。 表64 Counters组件方法及说明 返回指定计数器的当前值,如果此计数器先前没有创建,首先创建并设置成0, Increment( counter-_name)增加指定计数器的当前值,如果此计数器先前没有创建,首先创建并设置为1 删除指定的计数器 Set(counter name, value) 把指定计数器的值设置成参数 value提供的整数值,如果此计数器先前没有创 建,先创建并设定为指定值 2.使用 Counters组件 由于 Counters txt文件仅有一个所有组件实例都能访问的拷贝。因此,应该只创建单个的 Counters组件实例,并且使之对Web网站的所有页面都是可用的,实现这一点的常用方法是在 缺省Web站点根目录下的 global.asa文件中创建一个应用程序范围的实例。 采用下面程序: declare instance of the Counters component with application-level scope --> <OBJECT ID=objcounters RUNAT='Server.='Application PROGID="MSWC Counters> 可以使用 Counters组件对需要完成的任务创建一个新的计数器。在下面的程序中,给出了 有三项选择的调查问题,并对每一种选择的回答次数进行了统计,当使用者提交包含三项选 择的窗体后,将调入这个页面。假设选项通过点击 SUBMIT按钮的 cadRes、 amano和 cmdMaybe来选择,其对应值分别是“是”、“否”和“可能”。 8· n vBscript If Request Form("cmdYes) 'Yes'Then objcounter Increment('Response_Yes) If Request Form("cmdNo)='NoThen objCounter Increment(Response_No) If Request Form("cmdMaybe")=Maybe.Then objcounter. Increment("Response_Maybe) 如果这是第一次收到一个指定的响应,程序将创建一个新的计数器并自动初始化为1 计数器在使用范围上没有限制,因为 Counters对象创建在文件 global.asa中,这意味着在 虚拟应用程序或Web网站中创建的任何一个页面中都是可用的,所以这个“调查计数器”可 用在应用程序的任何页面上,记住单个的 Counters对象能提供所需的许多独立计数器,不需要 创建很多 Counters对象实例
6.2.4 Counters组件 C o u n t e r s组件能用于创建、存储、递增和检索每个计数器的值。不要把它和本章后面将要 介绍的Page Counter组件混淆,C o u n t e r s组件能用于支持任何种类数据的统计。 一个计数器含有一个整数值,能通过 C o u n t e r s组件的方法进行运算。使用 S e t方法设置计 数器的指定值,用 G e t方法检索计数器中的值,使用 I n c r e m e n t方法使计数器的值加 1,使用 R e m o v e方法删除一个计数器。所有的计数器的值存储在一个名为 C o u n t e r s . t x t的文本文件中, 可在C o u n t e r s . d l l组件所在的目录中找到该文件。 1. Counters组件的成员 C o u n t e r s组件提供了用于维护每个计数器组件中数值的四个方法,如表 6 - 4所示。 表6-4 Counters组件方法及说明 方 法 说 明 G e t (c o u n t e r _ n a m e) 返回指定计数器的当前值,如果此计数器先前没有创建,首先创建并设置成 0, 其返回值为 0 I n c r e m e n t (c o u n t e r- _ n a m e ) 增加指定计数器的当前值,如果此计数器先前没有创建,首先创建并设置为 1 R e m o v e (c o u n t e r _ n a m e) 删除指定的计数器 S e t (counter_name, value) 把指定计数器的值设置成参数 v a l u e提供的整数值,如果此计数器先前没有创 建,先创建并设定为指定值 2. 使用C o u n t e r s组件 由于C o u n t e r s . t x t文件仅有一个所有组件实例都能访问的拷贝。因此,应该只创建单个的 C o u n t e r s组件实例,并且使之对 We b网站的所有页面都是可用的,实现这一点的常用方法是在 缺省We b站点根目录下的g l o b a l . a s a文件中创建一个应用程序范围的实例。 采用下面程序: 可以使用C o u n t e r s组件对需要完成的任务创建一个新的计数器。在下面的程序中,给出了 有三项选择的调查问题,并对每一种选择的回答次数进行了统计,当使用者提交包含三项选 择的窗体后,将调入这个页面。假设选项通过点击 S U B M I T按钮的 c n d Ye s、c m d N o和 c m d M a y b e来选择,其对应值分别是“是”、“否”和“可能”。 如果这是第一次收到一个指定的响应,程序将创建一个新的计数器并自动初始化为 1。 计数器在使用范围上没有限制,因为 C o u n t e r s对象创建在文件 g l o b a l . a s a中,这意味着在 虚拟应用程序或 We b网站中创建的任何一个页面中都是可用的,所以这个“调查计数器”可 用在应用程序的任何页面上,记住单个的 C o u n t e r s对象能提供所需的许多独立计数器,不需要 创建很多C o u n t e r s对象实例。 182计计ASP 3 高级编程 下载