日期:2012-03-14  浏览次数:21135 次


    ASP/IIS的标准安装包括一系列服务器组件,这些组件在IIS文档中被描述为可安装组件(installable component),尽管缺省状态下它们是安全安装。但也有可能这个名称仅仅是沿用ASP的前几个版本中的名字。在以前版本中,这些组件需要人工安装。现在,如果要给它们起个合适的名称,可称为“可实例化的组件”。
       需要注意的是,在第8章将介绍一个特定的可安装组件,即ADO组件。后面的章节中使用的其他组件都是作为特定的服务或服务器应用程序的一部分而安装的。例如协作数据对象(Collaborative Date Objects,简称CDO和CDONTS)组件,用于邮件服务器和电子邮件消息。本章的其余部分将讨论,如何使用其他通用性较强的组件为Web网站或Intranet提供增强功能。
       在Windows 2000中的WinNTSystem32intesrv目录下可找到这些ASP可安装组件,该目录也放置一些组件要求的配置文件。下面按字母顺序列出了一些组件。
       · Ad Rotator组件用于控制可点击图像的出现,如广告或标题。使用存储在配置文件中的信息,Ad Rotator能够依据配置文件规定的比率显示不同的图像,同时也具备把可点击的广告重新定位到相应的URL以及记录图像点击次数的特性。
       · Browser Capabilities组件使用UserAgent字符串,该字符串由浏览器发往服务器,用来识别相应的浏览器。它提供了反映特定浏览器功能的一系列属性,例如是否支持脚本、cookie或Java小程序。
       · Content Linking组件用于提供一系列方便导航的页面,这些页面可被改变或更新而不必编辑各个页面。该组件采用一个文本文件(含有页面URL和显示顺序),使创建按指定顺序链接起来的一些页面很容易。
       · Content Rotator组件采用一种配置文件来指定插入到其他页面中的HTML、文本或程序代码,根据配置文件指定的情况,显示内容的任何部分。
       · Counters组件能够创建、递增和永久地存储各个在脚本代码中使用的整数计数器的数值。
       · Logging Utility组件提供对Web服务器日志文件的访问,并且允许在一个ASP页面内读取和更新这些数据。这是Windows 2000中随IIS 5.0和ASP 3.0新增的特性。
       · MyInfo组件为可在整个网站内访问的名称/值对的存储提供了一个存储空间,这些数据在服务器上以XML格式的文本文件存储(不同于应用程序作用域,这些数据在Web网站范围之外仍然保留)。
       · Page Counter组件记录访问一个页面的次数,可以用于跟踪页面的点击次数。
       · Permission Checker组件有助于防止当一个用户试图访问没有正确的权限设置的资源时引起的脚本错误。
       · Tools组件提供了一些在页面中可以采用的方法,这些方法用于检验一个文件是否存在、处理HTML窗体、生成一个随机整数。另外还有一些用在Macintosh苹果计算机上的方法,可以检查是否存在某个服务器插件程序,检查当前用户是否为网站拥有者。
       另外一个由IIS/ASP提供的组件,即Status组件,只能用于Macintosh计算机的个人Web服务器上。本书没有涉及该组件,若要详细了解该组件,可通过HTTP://localhost/iis/htm/asp/complqt0.htm查阅ASP/IIS提供的IIS 5.0文档。

6.2.1 使用示例页面
       本书已经提供了一系列的示例页面来说明所有这些组件的用法。
       可以从Wrox Web网站上下载这些实例页面,并在自己的计算机上运行。在下载的文件的Chapter06子目录中会找到本章所用的程序代码。
       在运行示例页面之前,确保MyInfo和Counter组件的“全局”实例化代码已包含在缺省Web站点的global.asa文件中。在示例文件中提供了global.asa文件中所需要的代码,可以将这些代码加到现有的global.asa文件中,不需要更换整个文件。
<!-- declare instance of the ASP Counters component with application-level scope
-->
<OBJECT ID="objCounters" RUNAT="Server" SCOPE="Application"
PROGID="MSWC.Counters">
</OBJECT>

<!-- declare instance of the ASP MyInfo component with application-level scope
-->
<OBJECT ID="objMyInfo" RUNAT="Server" SCOPE="Application" PROGID="MSWC.MyInfo">
</OBJECT>
示例文件的主菜单页面(Default.asp)使用Content Linking组件创建到每一个页面示例的链接。因此,我们将首先研究这个组件,也涉及了Ad Rotator和Counters组件的有关问题。

6.2.2 Content Linking组件
       Content Linking组件对网站是非常有用的工具,它提供了内容页面,或者包含对同一站点上其他页面的链接列表的页面。它自动把当前显示页面的URL与存储在服务器里的文本文件的页面列表匹配起来并且能允许用户通过页面列表按正反顺序进行浏览。也就是说,即使访问者已经在内容页面中点击了一个链接并且正在查看列表中的某一个页面,该组件仍然会辨认出所访问的页面在列表中的位置。
       因为所有详细资料均在一个文本文件中,维护网站以及页面的链接仅仅需要编辑这个文本文件。例如可以通过在内容链接列表文件中重新排列页面的顺序,来改变它们的显示顺序。
1.  内容链接列表的文件
内容链接列表文件包括一个简单的按显示顺序排列的URL列表,同时也提供了相应的描述,用于在内容页面中显示链接文本。如果需要,还可以增加对每个页面的注释,注释可以帮助识别链接,但对访问者来说注释是不可见的。
列表文件对于每个页面包含一个文本行。每一行由URL、描述和注释所组成,各部分由Tab字符(不是空格,否则文件将不能工作)分隔,最后有回车结束。例如:
newpages.htm        New additions to our site              we update this weekly
offers.htm            Special Offers for this week         we only update this monthly
register.htm           Registration for new users
main.htm               The main forum and chat area&n