按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
Content Linking 组件创建管理 URL 列表的 Nextlink 对象,要使用 Content Linking 组件,必须需要先创建 Content Linking List 文件。 Content Linking 组件正是通过读取这个文件来获得处理我们希望链接的所有页面的信息。事实上该文件是一个纯文本文件,其内容如下 :
page1。htm one
page2。htm two
page3。htm three
page4。htm four
page5。htm five
page6。htm six
这个文本文件的每行有如下形式 :
url description ment
其中, URL 是与页面相关的超链地址, description 提供了能被超链使用的文本信息, ment 则包含了不被 Content Linking 组馐偷淖⑹托畔ⅲ淖饔萌缤绦蛑械淖⑹汀?description 和 ment 参数是可选的。
下面我们来看看如何具体使用 Content Linking 组件 :
《 html》
《 head》
《 meta http…equiv=〃Content…Type〃 content=〃text/html; charset=gb2312〃》
《 title》网络电子读物宝藏 《 /title》
《 /head》
《 body》
《 p》网络电子读物导航
《 %
Set Link = Server。CreateObject(〃MSWC。NextLink〃)
count = Link。GetListCount(〃nextlink。txt〃)
Dim I
For I=1 to count
%》
《 ul》《 li》《 a href=〃《 %= Link。GetNthURL(〃nextlink。txt〃; I) %》〃》《 %= Link。GetNthDescription(〃nextlink。txt〃; I) %》《 /a》
《 % Next %》
《 /body》
《 /html》
在以上代码中,我们先用 GetListCount 方法确定在文件 nextlink。txt 中有多少条项目,然后利用循环语句,并使用 GetNthURL、 GetNthDescription 方法逐一将存储在 nextlink。txt文件中的内容读出并显示给客户端浏览器。
下面列出了 Content Linking 组件所有可使用的方法 GetListCount(file) 统计内容链接列表文件中链接的项目数。
GetNextURL(file) 获取内容链接列表文件中所列的下一页的 URL。
GetPreviousDescription(file) 获取内容链接列表文件中所列的上一页的说明行。
GetListIndex(file) 获取内容链接列表文件中当前页的索引。
GetNthDescription(file;index) 获取内容链接列表文件中所列的第 N 页的说明。
GetPreviousUR(file) 获取内容链接列表文件中所列的上一页的 URL。
GetNextDescription(file) 获取内容链接列表文件中所列的下一页的说明。
GetNthURL(file;index) 获取内容链接列表文件中所列的第 N 页的说明。
在我们创建了网站的总导航页面后,我们当然还希望在每一页中添加一个〃上一页〃、〃下一页〃的导航超链,下面我们就来看看如何实现导航超链。
由于考虑到你的网站可能包含了上千或更多的页面,所以我们不可能在每一个页面中都编写实现导航超链的 ASP 代码。因此,我们必须利用前几篇中所学到的服务器端包容 SSI,这样就避免了大量的重复作业,请看下例 :
《 !……#include file=〃nextprev。inc〃……》
只要将这端代码放在每个页面中即可。 nextprev。inc 文件的内容如下 :
《 %
Set Link = Server。CreateObject(〃MSWC。NextLink〃)
count = Link。GetListCount(〃nextlink。txt〃)
current = link。GetListIndex(〃nextlink。txt〃)
If current 》1 Then
%》
《 a href=〃《 %= Link。GetPreviousURL(〃nextlink。txt〃) %》〃》上一页 《 /a》
《 %
End If
If current 《 count Then
%》
《 a href=〃《 %= Link。GetNextURL(〃nextlink。txt〃) %》〃》下一页 《 /a》
《 % End If %》
今天的学习又到此结束了,在这里我要再次感谢所有关心我的文章的朋友们,你们的来信给了
我很大的鼓舞,不过请大家不要再称我为〃老师〃,其实我也和你们一样是在不断的学习和摸索中,
有问题我们可以一起探讨,我的文章中肯定还存在很多不足或漏洞,也希望大家发现后能及时向我
提出。由于近来 ASP 已经在国内的网站中广泛运用起来,所以应朋友们的要求,在国内 ASP 高手
飞鸟的热情帮助下,我决定写一些 ASP 应用实例作为现在这篇文章的姊妹篇,这样也就可以为大家
提供一些真正实用的东西了,敬请关注。
ASP基础教程:其它的ASP常用组件
当你用 ASP 编写服务器端应用程序时,必须依靠 ActiveX 组件来强大 Web 应用程序的功能,譬如:你需要连接数据库,对数据库进行在线操作等等。
上两篇中作者给大家介绍了 AD Rotator、 Database Access 等组件的使用方法,今天我们接着来看看其它的一些 ASP 常用组件。
一、 Browser Capabilities 组件众所周知,并不是所有浏览器都支持现今 Internet 技术的方方面面。有一些特性,某些浏览器支持而另一些浏览器却不支持,如 : ActiveX 控件、影像流、动态 HTML、 Flash 以及脚本程序等。使用 ASP 的 Browser Capabilities 组件,就能够设计〃智能〃的 Web 页,以适合浏览器性能的格式呈现内容。 Browser Capabilities 组件能够创建一个 BrowserType 对象,该对象提供带有客户端网络浏览器的功能说明的用户脚本。该组件之所以能识别客户浏览器的版本等信息,主要是因为当客户浏览器向服务器发送页面请求时,会自动发送一个 User Agent HTTP 标题,该标题是一个声明浏览器及其版本的 ASCII 字符串。 Browser Capabilities 组件将 User Agent 映射到在文件 Browscap。ini 中所注明的浏览器 ; 并通过 BrowserType 对象的属性来识别客户浏览器。若该对象在 browscap。ini 文件中找不到与该标题匹配的项,那么将使用默认的浏览器属性。若该对象既未找到匹配项且 browscap。ini 文件中也未指定默认的浏览器设置,则它将每个属性都设为字符串 〃UNKNOWN〃。在默认情况下, browscap。ini 文件被存放在 WINDOWSSYSTEMINERSRV( 如果是 95/98+PWS4) 或 NTSYSTEM32INERSRV( 如果是 NT) 目录中,你可以自己编辑这个文本文件,以添加自己的属性或者根据最新发布的浏览器版本的更新文件来修改该文件。请看以下 checkCookie() 过程,使用 BrowserCap 对象的 Cookie 属性来判断客户端浏览器是否支持 Cookie,并返回信息 :
《 %
Sub checkCookie()
Set BrowserCap=Server。CreateObject(〃MSWC。BrowserType〃)
if BrowserCap。Cookie=True then
response。write 〃你的浏览器支持 Cookie!〃
else
response。write 〃对不起,你所使用的浏览器不支持 Cookie!〃
end if
end Sub
%》
二、 File Access 组件如果你的网龄足够大的话,你一定见过〃恐龙时代〃的 CGI 留言簿,那是 WEB 留言簿最早的雏形。那时候在基于 Internet 的 WEB 应用程序中连接服务器后端数据库还十分困难,因此留言簿中的历史信息并不是同如今一样存储在后端数据库中。那么这些数据究竟是保存在哪里的呢?答案就是〃文本文件〃, CGI 程序可以将从客户端接收的信息写进一个存放在服务器端的文本文件中,该文件可以是 HTML 文件或 TXT 等文件,这样就使得程序员们可以不通过同数据库连接就可以将客户信息保存下来,但是写此类 CGI 程序甚是烦琐,下面列出了一个此类程序的最简单的样本 :
#!/usr/local/bin/perl
# Perl Location one your server
print 〃Content…type: text/plainnn〃;
if(ENV{'REQUEST_METHOD'}eq〃POST〃){
read(STDIN;buffer;ENV{'CONTENT_LENGTH'});
}elsif(ENV{'REQUEST_METHOD'}eq〃GET〃){
buffer=ENV{'QUERY_STIRNG'};
}
@pairs=split(/&/;buffer);
foreach pair(@pairs){
(name;value)=split(/=/;pair);
value=~tr/+//;
value=~s/%('a…f A…F 0…9''a…f A…f 0…9')/pack(〃C〃;hex(1))/eg;
FORM{name}=value;}
file_name=〃guestbook。txt〃;#File name
#具体内容
open(FILE;〃》》file_name〃)||die 〃打开文件错误〃;
print FILE 〃记录时间〃:date nn〃;
print FILE 〃姓名〃:FORM{'name'}〃;
print FILE 〃单位〃:FORM{'pany'}n〃;
print FILE 〃电话〃:FORM{'phone'}
print FILE 〃地址〃:FORM{'address'}n〃;
print FILE 〃邮编〃:FORM{'zip'}
print FILE 〃邮件地址〃:FORM{'email'}n〃;
print FILE 〃返回意见〃:FORM{'content'}
close (FILE)
大家可以感觉到,与 ASP 相比此类 CGI 程序的可读性和易操作性都较差。那么你一定想问 ASP 是否也能直接在服务器上写文件呢?答案当然是肯定的。但是聪明的朋友可能会想到,既然 ASP 同 WEB 数据库的连接如此便捷,我们又何需再将客户信息写在文本文件中呢, ASP 的这个功能岂不是画蛇添足?的确,对于那些我们常见的留言簿、 BBS 等 WEB 应用程序而言,无论是在程序的执行效率还是易用性上,我们都不可能再用写文本文件来替代数据库,但是在某些 WEB 应用领域里写文本文件既是一种规范也是一种相对数据库而较便捷的方法。如果你对 NT 较熟悉的话,你一定知道 NT 具有非常强大的安全机制,它可以将几乎所有的服务器操作和连接的信息自动保存在一个后缀名为 。log 的文件中,其实这种技术也完全可以被运用在 WEB 上,用来记录一些的客户登陆信息。下面的这段程序正是利用 ASP 读写文本文件的特性,在一个 WEB BBS 程序中创建自动记录每个用户发言记录的功能。
《 %
Set fs = CreateObject(〃Scripting。FileSystemObject〃)
ForReading = 1
'以只读模式打开文件。不能对此文件进行写操作。
ForAppending = 8
'打开文件并在文件末尾进行写操作。
TristateUseDefault = …2
TristateTrue = …1
TristateFalse = 0
'……………………………写入系统log开始……………………
servermap=server。MapPath(〃bbslog”)
'映射系统物理路径
temp=servermap&〃”&year(date)&month(date)&〃”
'获取系统物理路径和时间,并以此作为log文件存放的物理路径
if Not fs。FolderExists(temp) then
fs。CreateFolder(temp)
end if
'检测是否存在文件夹,否则自动创建
dim syslog
dim tempname
tempname=date
syslog=temp&tempname&〃。log〃
'文件名为e:bbslog月份月日。log
li=user&〃&〃&Now&〃&〃&Request。ServerVariables(〃REMOTE_ADDR〃)&〃&〃&tempfile&〃&〃&letter&〃&〃&title
'log文件记录的格式为:用户名&发信时间&用户ip&文件路径&信区&信件标题
if fs。FileExists(syslog) then
Set ss = fs。OpenTextFile(syslog;ForAppending;true)
else
set ss = fs。CreateTextFile(syslog;ForWriting;false)
end if
'检测l