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 文件被寄放在 WINDOWS\\\\SYSTEM\\\\INERSRV( 假如是 95/98+PWS4) 或 NT\\\\SYSTEM32\\\\INERSRV( 假如是 NT) 目录中,你可以自己编辑这个文本文件,以添加自己的属性或者根据最新宣布的浏览器版本的更新文件来改动该文件。请看以下 checkCookie() 历程,应用 BrowserCap 工具的 Cookie 属性来判断客户端浏览器是否支持 Cookie,并返复书息 :

二、 File Access 组件假如你的网龄足够大年夜的话,你必然见过“恐龙期间的 CGI 留言簿,那是 WEB 留言簿最早的雏形。那时刻在基于 Internet 的 WEB 利用法度榜样中连接办事器后端数据库还好不轻易,是以留言簿中的历史信息并不是同如今一样存储在后端数据库中。那么这些数据究竟是保存在哪里的呢?谜底便是“文本文件, CGI 法度榜样可以将从客户端接管的信息写进一个寄放在办事器真个文本文件中,该文件可所以 HTML 文件或 TXT 等文件,这样就使得法度榜样员们可以不经由过程同数据库连接就可以将客户信息保存下来,然则写此类 CGI 法度榜样甚是啰嗦,下面列出了一个此类法度榜样的最简单的样本 :

#!/usr/local/bin/perl

# Perl Location one your server

print "Content-type: text/plain\\\\n\\\\n";

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 \\\\n\\\\n";

print FILE "姓名":$FORM{\\\'name\\\'}";

print FILE "单位":$FORM{\\\'company\\\'}\\\\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 法度榜样中创建自动记录每个用户谈话记录的功能。

\\\'-----------写入系统log开始--------

servermap=server.MapPath("\\\\bbs\\\\log\\\\")

\\\'映射系统物理路径

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:\\\\bbs\\\\log\\\\月份\\\\月日.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

\\\'检测log文件是否存在,假如存在则追加文件内容,反之则直接写文件

ss.WriteLine(li)

ss.Close

\\\'-----------log文件写入停止---------

%>

假如你没有完全看懂上面的这段法度榜样,就请听作者逐步道来。 File Access 组件供给了可用来造访谋略机文件系统的措施和属性。我们可以应用 File Access 组件创建 FileSystemObject 工具,以上法度榜样的第一句便是使用 File Access 组件创建了一个名为 fs 的工具实例。在工具被创建后,你可以经由过程它造访文件,该工具没有属性,它独一的意义便是创建、打开或读写文本文件。 FileSystemObject 工具有两种最常用的措施,一种用来创建文件,另一种是用来打开并读写文本文件。 CreateTextFile 措施得到你指定的文件名并创建该文件,它返回一个 TextStream 工具,你可以用该工具在文件被创建后操作该文件, CreateTextFile 措施的语法如下 :

Set objTextStream=FileSystemObject.CreateTextFile(Filename,[Overwrite],[Unicode])

下面作者给大年夜家解释一下 CreateTextFile 措施的参数

1、 Filename 包孕文件路径名的字符串,可所以文件的全路径名,包括驱动器名和目录名,或者也可以只是文件名,假如只包孕文件名的话,文件将被创建在站点的根目录下。

2、 Overwrite 布尔量,设置成 False 时可以防止 FileSystemObject 工具在创建一个新文件时删除已存在的文件,该参数是可选的,假如没有赋值系统默觉得 true,具有相同文件名的已有文件会被删掉落。

3、 Unicode 可选参数。布尔值指明是否以 Unicode 或 ASCII 文件款式创建文件。假如以 Unicode 文件款式创建文件,则该值为 True;假如以 ASCII 文件款式创建文件,则该值为 False。假如省略此部分,则假定创建 ASCII 文件。

在前面的法度榜样中我们用 set ss=fs.CreateTextFile(syslog,ForWriting,false) 来在 log 文件不存在的环境下创建文件并对文件进行写操作,这里的“ForWriting表示写文件。

与 CreateTextFile 措施不合, OpenTextFile 措施用来得到你指定的文件名并打开该文件,使用它所带的参数我们可以对文件进行各类不合的操作,和 CreateTextFile 措施一样, OpenTextFile 措施返回一个 TextStream 工具,使得你可以在文件被打开后操作该文件。 OpenTextFile 措施的语法如下 :

Set objTextStream=FileSystemObject.OpenTextFile(Filename,[IOmode],[Create],[Format])

参数阐明如下 :

1、 Filename 必须的变量,同 CreateTextFile 的 filename

2、 IOmode 可选的常量,取值为下列两个常数之一 ForReading 或 ForAppending,假如 mode 为 1,文件以只读要领打开,假如为 8,则文件以追加的要领打开。

3、 Create 可选的布尔量,指定假如你想打开的文件不存在是做什么操作,假如其值为 True,当文件不存在时就自动创建一个空的文件。假如为 False,就会在文件没找到时孕育发生一个掉足信息,其默认值是 False,建议将其设为 True,以避免在打开文件时反省是否掉足。

4、 Format 可选值,可以选择三种 Tristate 值分手指定文件的款式, -2、 -1、和 0 分手对应于系统缺省、 unicode 和 ASCII。

在打开或创建了文本文件后,就获得一个 TextStream 工具,该工具有一个光标,就好象是在字处置惩罚法度榜样中的光标一样,指出接下来要敲入的字符将呈现的位置,它同时也指出你要读取的字符的位置。不能经由过程 CreatObject 来创建一个 TextStream 工具,获得 TextStream 工具的独一措施是如前所述的用 FileSystemObject 工具打开一个存在的文本文件或者创建一个新的文件。

下面列出了 TextStream 工具的属性和措施

TextStream.AtEndOfLine 只读布尔量,当光标在当前行的末端时,其值为 true,反之则为 false

TextStream.AtEndOfStream 只读布尔量,假如光标在流的末端时,其值为 true,否则为 false

TextStream.Column 只读的整数,统计从行首到当前光标位置之间的字符数

TextStream.Line 只读的整数,指明光标所在行在全部文件中的行号

TextStream.close() 关闭流以及对应的文本文件

TextStream.read(Num) 指定从光标确当前位置开始从文本文件中读取必然数目的字符

TextStream.readall() 将全部流读入一个字符串中

TextStream.readline() 将一整行的字符读入一个字符串中

TextStream.write(text) 将一个字符串写入流中

TextStream.writeline() 将一个文本串写入流中

TextStream.skip(Num) 在流中,将光标的位置移动必然数目的字符串长度

TextStream.skiplines() 在流中,将光标移动必然数目的行数

TextStream.writeblank 将必然数目的空行写入流中

lines(num)

信托大年夜家现在已经可以感到到 ASP File Access 组件的强大年夜功能了,着实它远不仅仅可以写一些 log 文件,经由过程它你以致可以绝不辛勤的远程自动更新你的网站,你只要把固定款式的文本文件传送到远真个办事器上,经由过程 File Access 组件读取文件,并自动天生全新 HTML 页面即可,而不必再辛费力苦地一个一个地更新 HTML 文件。假如你有兴趣,你完全可以用 ASP 的 File Access 组件写一个自己的全自动 HTML 天生器,充分享受掩护网站的超前轻松感。

您可能还会对下面的文章感兴趣: