174s:;商程 Chinapub.com 下载 2. Content Linking组件的成员 Content Linking组件提供了八种方法,如表6-1所示。这些方法能够检索来自内容链接列 表文件的条目,既能相对于当前页面检索条目,也可以使用索引号检索绝对条目。第一个条 目的索引号是1 表6-1 Content Linking组件的方法及说明 GetListCount(links file) 返回文件 links file中条目的数量 GetListIndex(links file) 返回文件 links 当前页面的索引号 GetNextURLlinks file) 返回文件 links file中下个页面的URL GetNextDescription( links file) 返回文件 links file中下个页面的描述 GetPreviousURL(links file) 返回文件 links file中前一个页面的URL Get Previous Description(links file 返回文件 links_file中前一个页面的描述 GetNthURL(inks file, n) 返回文件 links filel中第n个页面的URL GetNthDescription(links file, n) 返回文件 links file中第n个页面的描述 如果当前页面不在内容链接列表文件中,则 Getlistlndex返回0 GetNextURL和 GetNextDescription返回列表文件中最后一个页面的URL和描述。 Get PreviousURL和 Get Previous Description返回列表文件中第一个页面的URL和描述。 3.使用 Content linking组件 旦创建了自己的内容链接文件,就可以把该组件添加到页面中。这里有一个典型的示 例,它遍历内容链接文件中的所有条目,并且创建一个页面列表(以超链接表示页面)。 : 'in VBScript: Set objNextLink Server Createobject(MSWC Nextlink <UL> get the number of entr in the menu file intcount s objNextLink stCount('contlink. txt) loop through the entries <LI> <A HREF='<%= objNextLink GetNthURL( contlink txt", intLoop)8> <8. objNextLink GetNthDescription('contlink txt", intLoop)tA.3 这段代码首先创建了一个 Content linking对象。在普通的<UL>和</UL>标记之间,使用 Content Linking对象的 GetListCount方法查找在内容链接列表文件有多少条目。然后再遍历这 些条目,对于每一个条目在页面中放入一个<LⅠ>标记,后面跟着一个<A>标记。HREF属性的 值从列表文件中使用 GetnthURL方法检索得到,用作链接文本的描述使用 GetNth Description 方法 法得到 注意,内容列表文件和使用它的ASP页面应处在同一文件夹中。否则,应提供一个相对 物理路径或一个完整的虚拟路径,如下所示:
2. Content Linking组件的成员 Content Linking组件提供了八种方法,如表 6 - 1所示。这些方法能够检索来自内容链接列 表文件的条目,既能相对于当前页面检索条目,也可以使用索引号检索绝对条目。第一个条 目的索引号是1。 表6-1 Content Linking组件的方法及说明 方 法 说 明 G e t L i s t C o u n t (l i n k s _ f i l e) 返回文件l i n k s _ f i l e中条目的数量 G e t L i s t I n d e x (l i n k s _ f i l e) 返回文件l i n k s _ f i l e中当前页面的索引号 G e t N e x t U R L (l i n k s _ f i l e) 返回文件l i n k s _ f i l e中下个页面的U R L G e t N e x t D e s c r i p t i o n (l i n k s _ f i l e) 返回文件l i n k s _ f i l e中下个页面的描述 G e t P r e v i o u s U R L (l i n k s _ f i l e) 返回文件l i n k s _ f i l e中前一个页面的U R L G e t P r e v i o u s D e s c r i p t i o n (l i n k s _ f i l e) 返回文件l i n k s _ f i l e中前一个页面的描述 G e t N t h U R L (links_file, n) 返回文件l i n k s _ f i l e中第n个页面的U R L G e t N t h D e s c r i p t i o n (links_file, n) 返回文件l i n k s _ f i l e中第n个页面的描述 如果当前页面不在内容链接列表文件中,则: • GetListIndex返回0。 • GetNextURL和G e t N e x t D e s c r i p t i o n返回列表文件中最后一个页面的 U R L和描述。 • GetPreviousURL和 G e t P r e v i o u s D e s c r i p t i o n返回列表文件中第一个页面的 U R L和描述。 3. 使用Content Linking组件 一旦创建了自己的内容链接文件,就可以把该组件添加到页面中。这里有一个典型的示 例,它遍历内容链接文件中的所有条目,并且创建一个页面列表 (以超链接表示页面)。 这段代码首先创建了一个 Content Linking对象。在普通的 < U L >和< / U L >标记之间,使用 Content Linking对象的G e t L i s t C o u n t方法查找在内容链接列表文件有多少条目。然后再遍历这 些条目,对于每一个条目在页面中放入一个 < L I >标记,后面跟着一个< A >标记。H R E F属性的 值从列表文件中使用 G e t N t h U R L方法检索得到,用作链接文本的描述使用 G e t N t h D e s c r i p t i o n 方法得到。 注意,内容列表文件和使用它的 A S P页面应处在同一文件夹中。否则,应提供一个相对 物理路径或一个完整的虚拟路径,如下所示: 174计计ASP 3 高级编程 下载
Chinapub.com 第6章活动展多器组件175 下载 intcount objNextLink. GetListcount(links \contlink txt')'physical pat intcount objNextLink. GetListcount(/demo/contlink txt)'virtual path (1)创建一个内容页面 我们已使用 Content Linking组件为本章提供的示例创建了菜单页面。 Chapter06文件夹中 的页面 Default. htm采用上述代码创建菜单,如图6-2所示。 The ASP Installable Components This menu is created using the Content Linking Component Uhang the Ad Rotator and co nters Component he content of the file contin txt that dafnes the monu B: pagecounte 1,雅 )sing the Tools ccomponent g the Logging Utility Component The cyscape Brow softartisan. coa 图6-2使用 Content Linking组件创建的菜单页面 可以看到内容链接列表文件的内容显示在链接的下面,我们使用 FileSystemObject对象完 成这一工作 create an instanc a Fil mobject object open the text file as a Textstream object Set objrstream s objFSO. OpenTextFile(Server MapPath('contlink txt), Forreading esponse. Write objTstream ReadAll read the whole file and put bitstream. Close 如果你编辑了 contlink txt文件,下次再次调用这个页面时,会看到菜单的条目发生了变化 注意文件中的最后三个条目,这三个条目使用前面介绍的 redirect. asp技术,把绝对(而不是相 对)的URL插入到列表中 (2)浏览这些页面 创建一个 Content Linking组件实例并且使用它的一个方法时,将把当前页面的URL与指定 的内容链接列表文件中的条目相匹配。不仅能用该组件创建一个内容列表(就像刚看到的那样), 而且当在浏览器上打开其中一个页面时,可以用该组件对列表中的各个页面进行导航。 意味着可以用超链接或按钮从这些页面中的一个移到另一个。例如,可以给页面添加
(1) 创建一个内容页面 我们已使用Content Linking组件为本章提供的示例创建了菜单页面。 C h a p t e r 0 6文件夹中 的页面D e f a u l t . h t m采用上述代码创建菜单,如图 6 - 2所示。 图6-2 使用Content Linking组件创建的菜单页面 可以看到内容链接列表文件的内容显示在链接的下面,我们使用 F i l e S y s t e m O b j e c t对象完 成这一工作。 如果你编辑了c o n t l i n k . t x t文件,下次再次调用这个页面时,会看到菜单的条目发生了变化。 注意文件中的最后三个条目,这三个条目使用前面介绍的 r e d i r e c t . a s p技术,把绝对(而不是相 对)的U R L插入到列表中。 (2) 浏览这些页面 创建一个Content Linking组件实例并且使用它的一个方法时,将把当前页面的 U R L与指定 的内容链接列表文件中的条目相匹配。不仅能用该组件创建一个内容列表 (就像刚看到的那样), 而且当在浏览器上打开其中一个页面时,可以用该组件对列表中的各个页面进行导航。 这意味着可以用超链接或按钮从这些页面中的一个移到另一个。例如,可以给页面添加 第 6章 活动服务器组件计计175 下载
176 ASP3高级编程 Chinapub.com 下载 Next和Back按钮,通过使用 GetNextURL和 Get PrevIouSURL方法能知道列表中的哪一个页面是 前一个,哪一个页面是下一个。另一方面,能用 GetnthURL方法跳到列表中的任何页面,用 Getlistlndex方法能知道当前页面在列表中的位置。 下面是一段给页面添加Next和Back按钮的代码,我们要做的只是把这段程序放在内容链 接文件所列出的每一页中,或者用SSI的# include指令将它插入其中 ! -- need a form to force Navigator to display the buttons--> < FORM ACTION=·> <号' in VBScript create an instance of the Content Linking component Set ob]NextLink Server Createobject(MSWC NextLink) set the content linking list file path and name strListFile=·cor ntlink. txt get the index of the current page in the list ntThisPage objNextLink GetListIndex(strListFile) If intThisPage 1 Then ' can go back <INPUT TYPE=BUTTON VALUE="<: Back ONCLICK='location href='<t= objNextLink GetPreviousuRL(strListPile)8>'i' ITLE=Go to ' <8=objNextLink GetPrevious Description(strlistFile)8>'"> End if <INPUT TYPE- BUTTON VALUE=. Menu .ONCLICK= location. href='Default. asp'T' TITLE='Return to the main 'Installable Components.menu'> If intThisPage objNextLink. GetListcount(strListFile)Then 'can go forward <INPUT TYPE- BUTTON VALUE=Next >i NCLICK=location.href-'<%= objNextLink GetNextURL(strListFile)$> TITLE"Go to '<8= objNextLink GetNext Description(strListFile)8> End工f 第一步是创建 Content Linking组件,然后把列表文件名存入一个变量中,以便后面在创建 页面里的客户端 JScript代码时能够使用这个列表文件。另外这样做也便于页面的维护,因为 如果想使用一个不同文件名仅需在一个地方改变就可以了 现在让我们了解一下在链接列表中所处的位置。 Getlistlndex方法提供当前页面的索引号, 从列表中的第一页开始。如果当前页面的索引号比1大,那么可以后退,所以我们在页面中创 建Back按钮。如果当前页面的索引号比列表中的项数少,创建Next按钮。页面中总是包括一 个Home按钮,以便访问者在任何时候都能轻易地返回到内容页面 如果打开列在主菜单中的页面之一的话,将会看到使用这项技术在每个页面上创建的 系列导航按钮,创建按钮的代码在文件 contlinkbuttons.inc中,可用# include指令将它插入每个 页面中。图6-3所示为带有按钮的界面。 在图6-3中有三个按钮,使用 GetPreviousDescription方法获得上个页面的链接文本,并把 这个文本放入Back按钮的 TITLE属性中,作为弹出的提示
N e x t和B a c k按钮,通过使用G e t N e x t U R L和G e t P r e v i o u s U R L方法能知道列表中的哪一个页面是 前一个,哪一个页面是下一个。另一方面,能用 G e t N t h U R L方法跳到列表中的任何页面,用 G e t L i s t I n d e x方法能知道当前页面在列表中的位置。 下面是一段给页面添加 N e x t和B a c k按钮的代码,我们要做的只是把这段程序放在内容链 接文件所列出的每一页中,或者用 SSI 的# i n c l u d e指令将它插入其中。 第一步是创建Content Linking组件,然后把列表文件名存入一个变量中 ,以便后面在创建 页面里的客户端 J S c r i p t代码时能够使用这个列表文件。另外这样做也便于页面的维护,因为 如果想使用一个不同文件名仅需在一个地方改变就可以了。 现在让我们了解一下在链接列表中所处的位置。G e t L i s t I n d e x方法提供当前页面的索引号, 从列表中的第一页开始。如果当前页面的索引号比 1大,那么可以后退,所以我们在页面中创 建B a c k按钮。如果当前页面的索引号比列表中的项数少,创建 N e x t按钮。页面中总是包括一 个H o m e按钮,以便访问者在任何时候都能轻易地返回到内容页面。 如果打开列在主菜单中的页面之一的话,将会看到使用这项技术在每个页面上创建的一 系列导航按钮,创建按钮的代码在文件 c o n t l i n k b u t t o n s . i n c中,可用# i n c l u d e指令将它插入每个 页面中。图6 - 3所示为带有按钮的界面。 在图6 - 3中有三个按钮,使用 G e t P r e v i o u s D e s c r i p t i o n方法获得上个页面的链接文本,并把 这个文本放入B a c k按钮的T I T L E属性中,作为弹出的提示。 176计计ASP 3 高级编程 下载
aopub.com 第6章活动服务器组件 177 下载 The MyInfo Component These are the aurrent properties of the MyInfo object Change a properties value Mhc國 图6-3带有按钮的界面 <INPUT TYPE- BUTTON VALUE=<: Back ONCLICK="location.href='<%. objNextLink GetPreviousURL(strListFile)8>'i TTLE=“Goto<号= objNextLink, GetPreviousDescription《 strlistFi1e)鲁>"> Next按钮采用 GetNextDescription方法完成类似的工作。 (3)用 JavaScipt跳转 这些导航按钮使用 JavaScript(而不是Ⅴ SCript)装载新页面,这样就能够和大多数现代浏 器兼容。例如Back按钮包含下面的属性 ONCLICK"location. href=1<8=objNextLink GetPreviousURL(strListFile)8> 当页面的HTML版本由ASP创建时,在<%%>标记中的表达式用其数值取代,所以发往 浏览器的网页看起来如下所示: ONCLICK='locationhref='permissionchecker asp'i 为什么选择使用变量来表示内容链接列表文件的名字?其原因是在单个语句中包括一个 层的嵌套引用是非常麻烦的 注意浏览器的缺省语言是 Javascript(或I中的 JScript)),而不是Ⅴ SCript,通过使 用 JavaScript,可以避免在 On click代码中必须提供 LANGUAGE参数,同时对非浏 览器提供兼容性 623 Ad rotator组件 d rotator组件允许浏览器在引用ASP页面时每次显示不同的图像,这项技术经常用在显 示广告的站点上。每次打开或重新载入页面时,ASP采用“旋转调度文件”( rotator schedule file)中的信息选择一副图像,并插入网页中。然而 Ad rotator组件能做更复杂的工作,它可以 把图像设置成超级链接而不是一副静止的图像,并能记录用户对每个广告的点击次数 在本章所介绍的组件中, Ad rotator组件可能是最难使用的,因为它涉及几个不同的文件 在查看每个文件之前,图6-4所示的工作过程总览可能有助于了解它们之间的组合方式 访问者可以浏览页面中由旋转调度文件指定的广告。通常这是个超级连接,并且对其点 击会载入一个重定向文件。这是个常规的ASP页面,能记录用户对文件的操作或点击计数, 然后重新定向到相应的广告主的网站
图6-3 带有按钮的界面 N e x t按钮采用G e t N e x t D e s c r i p t i o n方法完成类似的工作。 (3) 用J a v a S c i p t跳转 这些导航按钮使用JavaScript (而不是V B S c r i p t )装载新页面,这样就能够和大多数现代浏 览器兼容。例如B a c k按钮包含下面的属性: 当页面的H T M L版本由A S P创建时,在< % . . . % >标记中的表达式用其数值取代,所以发往 浏览器的网页看起来如下所示: 为什么选择使用变量来表示内容链接列表文件的名字?其原因是在单个语句中包括一个 三层的嵌套引用是非常麻烦的。 注意浏览器的缺省语言是 J a v a S c r i p t (或I E中的J S c r i p t ),而不是V B S c r i p t,通过使 用J a v a S c r i p t,可以避免在O n C l i c k代码中必须提供L A N G U A G E参数,同时对非I E浏 览器提供兼容性。 6.2.3 Ad Rotator组件 Ad Rotator组件允许浏览器在引用 A S P页面时每次显示不同的图像,这项技术经常用在显 示广告的站点上。每次打开或重新载入页面时, A S P采用“旋转调度文件” (rotator schedule f i l e )中的信息选择一副图像,并插入网页中。然而 Ad Rotator组件能做更复杂的工作,它可以 把图像设置成超级链接而不是一副静止的图像,并能记录用户对每个广告的点击次数。 在本章所介绍的组件中,Ad Rotator组件可能是最难使用的,因为它涉及几个不同的文件。 在查看每个文件之前,图6 - 4所示的工作过程总览可能有助于了解它们之间的组合方式。 访问者可以浏览页面中由旋转调度文件指定的广告。通常这是个超级连接,并且对其点 击会载入一个重定向文件。这是个常规的 A S P页面,能记录用户对文件的操作或点击计数, 然后重新定向到相应的广告主的网站。 第 6章 活动服务器组件计计177 下载
178 ASP3高级编程 Chinaopub.com 下载 旋转调度 访问者加载页 广告图像 点击广告 重定向文件 广告主的站点 图6-4 Ad rotator组件的工作过程总览 1.旋转调度文件 Ad rotator组件依赖于该文件来指定显示的广告或图像。这个文件包括每个图像文件的名 字、显示的尺寸大小以及显示时间的相对百分数。该文件分为两部分,由一个仅含有一个星 号(*)的行分隔 文件格式如下: bordER border adHomeuRL impressions 其中 ·URL是执行重新定向的ASP文件或程序的虚拟路径及名称。 idh和 height定义了页面中广告条的大小(以像素为单位),缺省值为440×60 border规定了广告条边界的宽度(以像素为单位),缺省值为1,无边界时为0 第一部分是可选的,设置应用于该文件中所有广告条的缺省值。这给设置所有图像的参 数提供了一种方法,边界宽度可以使用 Ad rotator组件中的 border属性来设置。如果忽略了 项或多项此类任选参数,而且没有明确设置对象属性,那么参数就使用其本身的缺省值。如 果忽略所有这些参数,仍需包含“*”作为文件的第一行 第二部分,即“*”后的部分,必须存在于该文件中,它提供了各个广告条的细节。对于 每个广告条,下面四个参数要重复使用。这些参数是 · adUR,是广告图像文件的虚拟路径和文件名 adHomeURL,是广告跳转到的URL,连字符(-)表明该广告条没有链接 text,浏览器不支持图形文件时显示的文本。 Impressions,是一个整数,指明了此广告条显示的相对时间或时间比率,例如一个文件 包含三个广告条,而且它们的 Impressions值分别设置为4、6和10,那么表明返回的页面 中有20%可能出现第一个广告条,30%出现第二个广告条,50%出现第三个广告条。这
图6-4 Ad Rotator组件的工作过程总览 1. 旋转调度文件 Ad Rotator组件依赖于该文件来指定显示的广告或图像。这个文件包括每个图像文件的名 字、显示的尺寸大小以及显示时间的相对百分数。该文件分为两部分,由一个仅含有一个星 号( * )的行分隔。 文件格式如下: 其中: • U R L是执行重新定向的A S P文件或程序的虚拟路径及名称。 • w i d t h和h e i g h t定义了页面中广告条的大小 (以像素为单位),缺省值为4 4 0×6 0。 • b o rd e r规定了广告条边界的宽度(以像素为单位),缺省值为1,无边界时为0。 第一部分是可选的,设置应用于该文件中所有广告条的缺省值。这给设置所有图像的参 数提供了一种方法,边界宽度可以使用 Ad Rotator组件中的b o r d e r属性来设置。如果忽略了一 项或多项此类任选参数,而且没有明确设置对象属性,那么参数就使用其本身的缺省值。如 果忽略所有这些参数,仍需包含“ *”作为文件的第一行。 第二部分,即“*”后的部分,必须存在于该文件中,它提供了各个广告条的细节。对于 每个广告条,下面四个参数要重复使用。这些参数是: • a d U R L,是广告图像文件的虚拟路径和文件名。 • a d H o m e U R L,是广告跳转到的U R L,连字符( - )表明该广告条没有链接。 • t e x t,浏览器不支持图形文件时显示的文本。 • i m p re s s i o n s,是一个整数,指明了此广告条显示的相对时间或时间比率,例如一个文件 包含三个广告条,而且它们的 i m p re s s i o n s值分别设置为4、6和1 0,那么表明返回的页面 中有2 0 %可能出现第一个广告条, 3 0 %出现第二个广告条, 5 0 %出现第三个广告条。这 178计计ASP 3 高级编程 下载 访问者加载页面 广告 G e t A d v e r t i s m e n t ASP页 点击广告 重定向文件 广告主的站点 广告图像 旋转调度 文件