您的位置:首页技术开发ASP教程 → ASP 3.0高级编程(二十四)

ASP 3.0高级编程(二十四)

时间:2004/11/7 4:13:00来源:本站整理作者:蓝点我要评论(0)

  (1)    创建一个内容页面

  我们已经使用Content Linking组件为本章提供的示例创建了菜单页面。Chapter06文件夹中的页面Default.htm采用上述代码创建菜单,如图6-2所示:

  图6-2  使用Content Linking组件创建的菜单页面

  可以看到内容链接列表文件的内容显示在链接的下面,我们使用FileSystemObject对象完成这一工作。

  <%

  'create an instance of a FileSystemObject object

  Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

  'open the text file as a TextStream object

  Set objTStream = objFSO.OpenTextFile(Server.MapPath("contlink.txt"), ForReading)

  Response.Write objTStream.ReadAll                          'read the whole file and put into page

  ObjTStream.Close

  %>

  如果你编辑了contlink.txt文件,下次再次调用这个页面时,会看到菜单的条目发生了变化。注意文件中的最后三个条目,这三个条目使用前面介绍的redirect.asp技术,把绝对(而不是相对)的URL插入到列表中。

  (2)    浏览这些页面

  创建一个Content Linking组件实例并且使用它的一个方法时,将把当前页面的URL与指定的内容链接列表文件中的条目相匹配。不仅能用该组件创建一个内容列表(就像刚看到的那样),而且当在浏览器上打开其中一个页面时,可以用该组件对列表中的各个页面进行导航。

  这意味着可以用超链接或按钮从这些页面中的一个移到另一个。例如,可以给页面添加Next和Back按钮,通过使用GetNextURL和GetPreviousURL方法能知道列表中的哪一个页面是前一个,哪一个页面是下一个。另一方面,能用GetNthURL方法跳到列表中的任何页面,用GetListIndex方法能知道当前页面在列表中的位置。

  下面是一段给页面添加Next和Back按钮的代码,我们要做的只是把这段程序放在内容链接文件所列出的每一页中,或者用SSI的#include指令将它插入其中。

  <%

  'we'll insert this into each page using an SSI #include statement

  'create an instance of the Content Linking component

  Set objNextLink = Server.CreateObject("MSWC.NextLink")

  'set the content linking list file path and name

  strListFile = "contlink.txt"

  'get the index of the current page in the list

  intThisPage = objNextLink.GetListIndex(strListFile)

  If intThisPage > 1 Then  'can go back

  %>

  <INPUT TYPE=BUTTON VALUE="< Back"

  ONCLICK="location.href='<%>';"

  TITLE="Go to '<%>'">

  &nbsp;

  <%

  End If

  %>

  <INPUT TYPE=BUTTON VALUE=" Menu " ONCLICK="location.href='Default.asp';"

  TITLE="Return to the main 'Installable Components' menu">

  <%

  If intThisPage < objNextLink.GetListCount(strListFile) Then  'can go forward

  %>

  &nbsp;

  <INPUT TYPE=BUTTON VALUE="Next >"

  ONCLICK="location.href='<%=>';"

  TITLE="Go to '<%>'">

  <%

  End If

  %>

  第一步是创建Content Linking组件,然后把列表文件名存入一个变量中,以便后面在创建页面里的客户端JScript代码时能够使用这个列表文件。另外这样做也便于页面的维护,因为如果想使用一个不同文件名仅需在一个地方改变就可以了。

  现在让我们了解一下在链接列表中所处的位置。GetListIndex方法提供当前页面的索引号,从列表中的第一页开始。如果当前页面的索引号比1大,那么可以后退,所以我们在页面中创建Back按钮。如果当前页面的索引号比列表中的项数少,创建Next按钮。页面中总是包括一个Home按钮,以便访问者在任何时候都能轻易地返回到内容页面。

  如果打开列在主菜单中的页面之一的话,将会看到使用这项技术在每个页面上创建的一系列导航按钮,创建按钮的代码在文件contlinkbuttons.inc中,可用#include指令将它插入每个页面中。图6-3所示为带有按钮的界面。

  图6-3  带有按钮的界面

  在图6-3中有三个按钮,使用GetPreviousDescription方法获得上个页面的链接文件,并把这个文本放入Back按钮的TITLE属性中,作为弹出的提示。

  <INPUT TYPE=BUTTON VALUE="< Back"

  ONCLICK="location.href='<%>';"

  TITLE="Go to '<%>'">

  Next按钮采用GetNextDescription方法完成类似的工作。

  (3)    用JavaScript跳转

  这些导航按钮使用JavaScript(而不是VBScript)装载新页面,这样就能够和大多数现代浏览器兼容。例如Back按钮包含下面的属性:

  ONLICK="location.here='<%>'; "

  当页面的HTML版本由ASP创建时,在<%…%>标记中的表达式用其数值取代,所以发往浏览器的网页看起来如下所示:

  ONCLICK="location.herf='permissionchecker.asp'; "

  为什么选择使用变量来表示内容链接列表文件的名字?其原因是在单个语句中包括一个三层的嵌套引用是非常麻烦的。

  注意浏览器的缺省语言是JavaScript(或IE中的JScript),而不是VBScript,通过使用JavaScript,可以避免在OnClick代码中必须提供LANGUAGE参数,同时对非IE浏览器提供兼容性。

  6.2.3 Ad Rotator组件

  Ad Rotator组件允许浏览器在引用ASP页面时每次显示不同的图像,这项技术经常用在显示广告的站点上。每次打开或重新载入页面时,ASP采用“旋转调度文件”(rotator schedule file)中的信息选择一副图像,并插入网页中。然而Ad Rotator组件能做更复杂的工作,它可以把图像设置成超级链接而不是一副静止的图像,并能记录用户对每个广告的点击次数。

  在本章所介绍的组件中,Ad Rotator组件可能是最难使用的,因为它涉及几个不同的文件。在查看每个文件之前,图6-4所示的工作过程总览可能有助于了解它们之间的组合方式。

  图6-4  Ad Rotator组件的工作过程总览

  1.  旋转调度文件

  Ad Rotator组件依赖于该文件来指定显示的广告或图像。这个文件包括每个图像文件的名字、显示的尺寸大小以及显示时间的相对百分数。该文件分为两部分,由一个仅含有一个星号(*)的行分隔。

  文件格式如下:

  REDIRECT URL

  WIDTH width

  HEIGHT height

  BORDER border

  *

  adURL

  adHomeURL

  text

  impressions

  其中:

  · URL是执行重新定向的ASP文件或程序的虚拟路径及名称。

  · width和height定义了页面中广告条的大小(以像素为单位),缺省值为440×60。

  · border规定了广告条边界的宽度(以像素为单位),缺省值为1,无边界时为0。

  第一部分是可选的,设置应用于该文件中所有广告条的缺省值。这给设置所有图像的参数提供了一种方法,边界宽度可以使用Ad Rotator组件中的border属性来设置。如果忽略了一项或多项此类任选参数,而且没有明确设置对象属性,那么参数就使用其本身和缺省值。如果忽略所有这些参数,仍需包含“*”作为文件的第一行。

  第二部分,即“*”后的部分,必须存在于该文件中,它提供了各个广告条的细节。对于每个广告条,下面四个参数要重复使用。这些参数是:

  · adURL,是广告图像文件的虚拟路径和文件名。

  · adHomeURL,是广告跳转到的URL,连字符(-)表明该广告条没有链接。

  · text,浏览器不支持图型文件时显示的文本。

  · impressions,是一个整数,指明了此广告条显示的相对时间或时间比率,例如一个文件包含三个广告条,而且它们的impressions值分别设置为4、6和10,那么表明返回的页面中有20%可能出现第一个广告条,30%出现第二个广告条,50%出现第三个广告条。这没有指明广告条在浏览器中显示的实际时间。注意每一个广告条的实际出现是随机的,并被修改以达到需要的比率。

  下面看一个重新定向文件的例子:

  REDIRECT AdRotFiles/ad_redirect.asp

  WIDTH 400

  HEIGHT 50

  *

  Adrotfiles/wrox.gif

  http://www.wrox.com/

  Better Books from Wrox press

  3

  AdRotFiles/lunar.gif

  http://www.going-to-the-moon.com/store.asp

  Acme Lunar Boost Supplies

  1

  2.  Ad Rotator组件的成员

  Ad Rotator组件含有一个方法和三个属性,方法如表6-2所示:

  表6-2  Ad Rotator组件的方法及说明

  方 法

  说 明

  GetAdvertisement(schedule_file)

  使用指定的schedule_file中的信息创建并返回一个字符串,这个字符串含有把下一个合适的图像插入到该页面所需的HTML

  属性如表6-3所示:

  属 性

  说 明

  Border

  整数型,是指广告条边界的宽度(以像素为单位),若未设定,则采用文件第一部分设定的值

  Clickable

  布尔型,规定广告栏图像文件是否显示为一个超级链接,缺省值为True

  TargetFram

  字符串型,目标框(frame)的名字。如果用户点击图像文件的话,这个框用于显示广告主的页面。如果忽略的话,页面装载到当前浏览器的目标框或窗口内,取代含有广告栏图像的页面,这个属性也能设置成一个标准的HTML框标识:_top、_new、_child、_self、_parent和_blank

  3.  使用Ad Rotator组件

  下面的代码说明了Ad Rotator组件的使用。创建了组件实例之后,设置属性参数并调用GetAdvertisement方法,指定调度文件的相对物理路径。由组件返回的HTML代码通过使用Response.Write方法插入到页面中。

  <%  'VBScript example

  QUOT = Chr(34)

  Set objAdRot = Server.CreateObject("MSWC.AdRotator")

  objAdRot.Border=0                   'no border

  objAdRot.Clickable=TRUE             'is a hyperlink

  objAdRot.TargetFrame="fraAdFrame"   'load into new window named fraAdFrame

  strHTML = objAdRot.GetAdvertisement("AdRotFiles\ad_schedule.txt")

  Response.Write(strHTML)             'put the HTML into the page

  %>

  GetAdvertisement方法的参数是相对于当前目录或Web网站根目录的调度文件物理路径和文件名。在上面的代码中,此文件取名为AdRotFiles,位于包含正在运行的ASP页面的当前目录下的子目录中。如果这个文件存入Web网站根目录下的AdRotFiles子目录,应使用“\AdRotFiles\MyAdFile.txt”。

  调用GetAdvertisement方法时,返回能插入网页中用于创建广告栏的HTML代码,对于上例中的旋转调度文件中的第一个广告栏,可以得到下列代码:

  <IMG SRC="/AdRotFiles/AdPics/wrox.gif"

  ALT="Better Books from Wrox Press" WIDTH=440 HEIGHT=60 BORDER=0>

  可以看到在常规的标记中放置了图像文件,HREF属性设置为重定向文件的名称AdRedirect.asp,同时广告主的主页URL和所用的图像添加到查询字符串中,因此当用户点击广告栏时,重定向文件将在服务器上载入并运行。

  4.  重定向文件

  重定向文件可以是一个ASP页面、一个ISAPI DLL或者是一个CGI应用程序,无论是哪一种,它必须能够接受和辨别广告主的主页URL以及图像名参数。它检查这些值并决定下一步该做什么。例如通常会把用户重新定向到与此广告栏有关的URL,这一点使用下面的VBScript代码很容易实现。

  Response.Redirect Request.QueryString("url")

  然而,重新定向文件提供给我们的不仅仅是这些。例如可以统计点击每个广告的用户数量,如果根据点击数收到广告费用的话,这将显得尤其有用。也可以用本章后面介绍的Counters组件来完成这项工作。

  …

  'get the URL of the advertiser's target page

  strAdvertiserURL = Request.QueryString("url")

  If Instr(strAdvertiserURL, "wrox.com") Then

  objCounters.Increment("wrox")

  Response.Clear

  Response.Redirect strAdvertiserURL

  End If

  If Instr(strAdvertiserURL, "going-to-the-moon") Then

  objCounters.Increment("lunar")

  Response.Clear

  Response.Write "Sorry, this isn't a real site..."

  End If

  …

  .. ' for other advertisers

  …

  查询字符串包含图像文件名时,在脚本中也要考虑这一点,如果在调度文件中,同一广告主有三种不同的图像,可以对每个图像单独地跟踪访问次数。

  …

  If Instr(strAdvertiserURL, "wrox.com") Then

  'this is an advert for the Wrox Press site

  Select Case Request.QueryString("image")

  Case "books.gif"

  objCounters.Increment("wrox_books")

  Case "website.gif"

  objCounters.Increment("wrox_site")

  Case Else

  objCounters.Increment("wrox_other")

  End Select

  Response.Clear

  Response.Redirect strAdvertiserURL

  End If

  …

  5.  一个Ad Rotator示例页面

  本章提供的示例文件包括一个Ad Rotator组件演示程序,它能够从前面见过的ASP Installable Components主菜单中打开。页面的上部显示的是一个由名为ad_schedule.txt的旋转调度文件定义的广告(可在本章示例目录下的Ad RotFiles子目录中找到ad_shedule.txt),如图6-5所示:

  图6-5  Ad Rotating页面的示例

  使用的代码前面已经讨论过,这里在调度文件中仅增加了另外一些条目,以便更清楚地显示载入页面时的广告的变化情况。如果点击一个广告,将运行名为ad_redirect.asp的重定向文件中的代码,并且相应的广告主的页面在新的窗口里打开。完成该工作的代码和前面见到的相同。

  在重定向文件中,可使用计数器(由Counters组件创建)实例存储每个广告的点击次数。

  …

  If Instr(strAdvertiserURL, "wrox.com") Then

  objCounters.Increment("wrox")

  Response.Clear

  Response.Redirect strAdvertiserURL

  End If

  …此页面的其余部分演示了Counters组件的作用,下面介绍该组件。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 《龙珠:超宇宙》 战斗E3 2014:瘆人僵尸《消 asp代码实现access数据导出到excel文件如何使用FSO读取Js文件内容并可以编辑修改对初学者有用的一些asp函数集学习ASP编程必会的代码

人气排行 asp代码实现access数据导出到excel文件asp不需要任何配置的伪静态实现如何使用FSO读取Js文件内容并可以编辑修改asp去除html标记和空格的代码Asp全选删除代码教大家网页伪静态知识及其2种实现方法Microsoft SQL Server 7.0安装问题(一)ASP.NET中的Code Behind技术4