亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

ASP教程:16、其它的ASP常用組件

2024-05-04 11:07:34
字體:
來源:轉載
供稿:網友

當你用 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,并返回信息 :

< %
Sub checkCookie()
Set BrowserCap=Server.CreateObject("MSWC.BrowserType")
if BrowserCap.Cookie=True then
response.write "你的瀏覽器支持 Cookie!"
else
response.write "對不起,你所使用的瀏覽器不支持 Cookie!"
end if
end Sub
%>

 

   有關 Browser Capabilities 組件的詳細信息,請參見動態網站設計十八般武藝 --ASP 篇 (2)。

   二、 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 程序中創建自動記錄每個用戶發言記錄的功能。

< %
Set fs = CreateObject("Scripting.FileSystemObject")
ForReading = 1
'以只讀模式打開文件。不能對此文件進行寫操作。
ForAppending = 8
'打開文件并在文件末尾進行寫操作。
TristateUseDefault = -2
TristateTrue = -1
TristateFalse = 0

'-----------寫入系統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(l
i)
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.A

tEndOfLine 只讀布爾量,當光標在當前行的末尾時,其值為 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 生成器,充分享受維護網站的超前輕松感。 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品高清在线观看| 精品日韩视频在线观看| 久久精品99无色码中文字幕| 久久久久久91香蕉国产| 98精品国产高清在线xxxx天堂| 欧美性猛交丰臀xxxxx网站| 91超碰中文字幕久久精品| 蜜臀久久99精品久久久久久宅男| 日韩精品在线视频观看| 精品亚洲一区二区三区| 日韩中文在线视频| 国产精品美女www爽爽爽视频| 国产精品永久免费| 国产精品日韩欧美大师| 黄色91在线观看| 亚洲图片欧美午夜| 91国在线精品国内播放| 欧美性生活大片免费观看网址| 亚洲美女精品成人在线视频| 亚洲欧美在线第一页| 国产精品激情av电影在线观看| 亚洲精品国偷自产在线99热| 亚洲精品久久久久中文字幕欢迎你| 精品国产乱码久久久久久天美| 清纯唯美亚洲综合| 日韩中文字幕不卡视频| 亚洲欧美资源在线| 亚洲xxxx做受欧美| 97国产成人精品视频| 欧美日韩免费一区| 亚洲午夜色婷婷在线| 亚洲精品91美女久久久久久久| 欧美精品videosex极品1| 丝袜亚洲欧美日韩综合| 久久久久久这里只有精品| 日韩国产欧美区| 亚洲最大av网站| 91亚洲精品久久久久久久久久久久| 一区二区福利视频| 国产精品久久国产精品99gif| 国产丝袜精品视频| 亚洲人成网站免费播放| 欧美成人高清视频| 国产一区二区美女视频| 国产视频精品在线| 国产精品视频久久久久| 精品久久香蕉国产线看观看gif| 国产精品看片资源| 青青草一区二区| 亚洲国产精品美女| 97精品伊人久久久大香线蕉| 日韩av在线免费看| 中文字幕在线日韩| 国产福利精品av综合导导航| 亚洲国产中文字幕在线观看| 少妇高潮 亚洲精品| 热门国产精品亚洲第一区在线| 亚洲天堂成人在线视频| 日韩欧美精品网站| 国产欧美一区二区三区在线| 亚洲国产精品久久91精品| 国产精品午夜一区二区欲梦| 国产69精品久久久久99| 17婷婷久久www| 久久精品99国产精品酒店日本| 欧洲成人免费aa| 国产精品一区二区三区久久| 亚洲欧美福利视频| 日韩电视剧免费观看网站| 2023亚洲男人天堂| 国产va免费精品高清在线| 国产噜噜噜噜久久久久久久久| 中文字幕欧美视频在线| 97在线精品国自产拍中文| 欧美精品制服第一页| 日韩精品久久久久| 狠狠综合久久av一区二区小说| 高清一区二区三区日本久| 久久久国产精彩视频美女艺术照福利| 欧美xxxx做受欧美.88| 青青草成人在线| 青草青草久热精品视频在线观看| 深夜福利亚洲导航| 国产综合福利在线| 国产精品美女免费看| 91国内免费在线视频| 欧美最猛性xxxxx亚洲精品| 91精品国产色综合久久不卡98口| 538国产精品一区二区免费视频| 91国产精品91| 91成人精品网站| 久久久精品欧美| 狠狠久久五月精品中文字幕| 日av在线播放中文不卡| 亚洲理论片在线观看| 国产在线观看精品| 成年无码av片在线| 日韩在线视频免费观看高清中文| 国产一区二区三区网站| 午夜精品国产精品大乳美女| 欧美在线视频观看免费网站| 亚洲精品美女在线| 国产精品偷伦视频免费观看国产| 国产综合久久久久久| 亚洲图中文字幕| 日韩精品视频在线观看免费| 国产精品免费视频xxxx| 欧美精品18videos性欧| 91国内揄拍国内精品对白| 欧美激情第三页| 国产欧美一区二区三区久久人妖| 2018国产精品视频| 国产网站欧美日韩免费精品在线观看| 国产精品久久久久久久久免费| 日韩中文字幕免费视频| 欧美日韩国产二区| 国产91精品视频在线观看| 国产女人18毛片水18精品| 日韩国产在线看| 日韩精品999| 欧美亚洲另类激情另类| 成人精品久久一区二区三区| 日韩欧美在线视频日韩欧美在线视频| 欧美激情二区三区| 奇米成人av国产一区二区三区| 亚洲黄色av女优在线观看| 亚洲国产精品一区二区三区| 国产精品久久二区| 日韩免费在线电影| 日韩av网站导航| 久久久久久久久久久国产| 久久久中精品2020中文| 91精品国产一区| 欧美激情一二三| 91在线无精精品一区二区| 中文字幕一区二区三区电影| 91影院在线免费观看视频| 九九九热精品免费视频观看网站| 亚洲欧美日韩高清| 在线播放国产一区中文字幕剧情欧美| 久久理论片午夜琪琪电影网| 中文字幕亚洲欧美一区二区三区| 91精品国产高清自在线看超| 国产欧美日韩精品丝袜高跟鞋| 91香蕉国产在线观看| 日韩中文第一页| 欧美精品做受xxx性少妇| 国产精品久久久久久婷婷天堂| 久久久亚洲影院| www高清在线视频日韩欧美| 欧美日韩国产中文字幕| 欧美一级电影久久| 日韩欧美一区二区在线| 久久久久久亚洲精品中文字幕| 成人免费网站在线| 日韩亚洲欧美中文在线| 欧美色欧美亚洲高清在线视频| 日韩在线观看你懂的| 久久久久一本一区二区青青蜜月| 三级精品视频久久久久| 久久精品国产久精国产思思| 国产一区二区精品丝袜| 欧美激情女人20p| 日本不卡视频在线播放|