仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 416|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网站制作之第十六课:别的的ASP经常使用组件

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:27:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧当你用ASP编写服务器端使用程序时,必需依托ActiveX组件来壮大Web使用程序的功效,比如:你必要毗连数据库,对数据库举行在线操纵等等。

  上两篇中作者给人人先容了ADRotator、DatabaseAccess等组件的利用办法,明天我们接着来看看别的的一些ASP经常使用组件。

  1、BrowserCapabilities组件尽人皆知,并非一切扫瞄器都撑持当今Internet手艺的各个方面。有一些特征,某些扫瞄器撑持而另外一些扫瞄器却不撑持,如:ActiveX控件、影象流、静态HTML、Flash和剧本程序等。利用ASP的BrowserCapabilities组件,就可以够计划“智能”的Web页,以合适扫瞄器功能的格局出现内容。BrowserCapabilities组件可以创立一个BrowserType工具,该工具供应带有客户端收集扫瞄器的功效申明的用户剧本。该组件之以是能辨认客户扫瞄器的版本等信息,次要是由于当客户扫瞄器向服务器发送页面哀求时,会主动发送一个UserAgentHTTP题目,该题目是一个声明扫瞄器及其版本的ASCII字符串。BrowserCapabilities组件将UserAgent映照到在文件Browscap.ini中所说明的扫瞄器,并经由过程BrowserType工具的属性来辨认客户扫瞄器。若该工具在browscap.ini文件中找不到与该题目婚配的项,那末将利用默许的扫瞄器属性。若该工具既未找到婚配项且browscap.ini文件中也未指定默许的扫瞄器设置,则它将每一个属性都设为字符串"UNKNOWN"。在默许情形下,browscap.ini文件被寄存在WINDOWSSYSTEMINERSRV(假如是95/98+PWS4)或NTSYSTEM32INERSRV(假如是NT)目次中,你能够本人编纂这个文本文件,以增加本人的属性大概依据最新公布的扫瞄器版本的更新文件来修正该文件。请看以下checkCookie()历程,利用BrowserCap工具的Cookie属性来判别客户端扫瞄器是不是撑持Cookie,并前往信息:

<%
SubcheckCookie()
SetBrowserCap=Server.CreateObject("MSWC.BrowserType")
ifBrowserCap.Cookie=Truethen
response.write"你的扫瞄器撑持Cookie!"
else
response.write"对不起,你所利用的扫瞄器不撑持Cookie!"
endif
endSub
%>

  有关BrowserCapabilities组件的具体信息,请拜见静态网站计划十八般技艺--ASP篇(2)。
  2、FileAccess组件假如你的网龄充足年夜的话,你必定见过“恐龙时期”的CGI留言簿,那是WEB留言簿最早的雏形。当时候在基于Internet的WEB使用程序中毗连服务器后端数据库还好不容易,因而留言簿中的汗青信息并非同现在一样存储在后端数据库中。那末这些数据事实是保留在那里的呢?谜底就是“文本文件”,CGI程序能够将从客户端吸收的信息写进一个寄存在服务器真个文本文件中,该文件能够是HTML文件或TXT等文件,如许就使得程序员们能够欠亨过同数据库毗连就能够将客户信息保留上去,可是写此类CGI程序甚是啰嗦,上面列出了一个此类程序的最复杂的样本:

#!/usr/local/bin/perl
#PerlLocationoneyourserver
print"Content-type:text/plain

";
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-fA-F0-9][a-fA-f0-9])/pack("C",hex($1))/eg;
$FORM{$name}=$value;}
$file_name="guestbook.txt";#Filename
#详细内容
open(FILE,">>$file_name")||die"翻开文件毛病";
printFILE"纪录工夫":$date

";
printFILE"姓名":$FORM{name}";
printFILE"单元":$FORM{company}
";
printFILE"德律风":$FORM{phone}
printFILE"地点":$FORM{address}
";
printFILE"邮编":$FORM{zip}
printFILE"邮件地点":$FORM{email}
";
printFILE"前往定见":$FORM{content}
close(FILE)

  人人能够感到到,与ASP比拟此类CGI程序的可读性和易操纵性都较差。那末你必定想问ASP是不是也能间接在服务器上写文件呢?谜底固然是一定的。可是伶俐的伴侣大概会想到,既然ASP同WEB数据库的毗连云云便利,我们又何需再将客户信息写在文本文件中呢,ASP的这个功效岂不是多此一举?切实其实,关于那些我们罕见的留言簿、BBS等WEB使用程序而言,不管是在程序的实行效力仍是易用性上,我们都不成能再用写文本文件来替换数据库,可是在某些WEB使用范畴里写文本文件既是一种标准也是一种绝对数据库而较便利的办法。假如你对NT较熟习的话,你必定晓得NT具有十分壮大的平安机制,它能够将几近一切的服务器操纵和毗连的信息主动保留在一个后缀名为.log的文件中,实在这类手艺也完整能够被使用在WEB上,用来纪录一些的客户上岸信息。上面的这段程序恰是使用ASP读写文本文件的特征,在一个WEBBBS程序中创立主动纪录每一个用户讲话纪录的功效。

<%
Setfs=CreateObject("Scripting.FileSystemObject")
ForReading=1
以只读形式翻开文件。不克不及对此文件举行写操纵。
ForAppending=8
翻开文件并在文件开端举行写操纵。
TristateUseDefault=-2
TristateTrue=-1
TristateFalse=0

-----------写进体系log入手下手--------
servermap=server.MapPath("bslog")
映照体系物理路径
temp=servermap&""&year(date)&month(date)&""
猎取体系物理路径和工夫,并以此作为log文件寄存的物理路径
ifNotfs.FolderExists(temp)then
fs.CreateFolder(temp)
endif
检测是不是存在文件夹,不然主动创立
dimsyslog
dimtempname
tempname=date
syslog=temp&tempname&".log"
文件名为e:bslog月份月日.log
li=user&"&"&Now&"&"&Request.ServerVariables("REMOTE_ADDR")&"&"&tempfile&"&"&letter&"&"&title
log文件纪录的格局为:用户名&发信工夫&用户ip&文件路径&信区&函件题目
iffs.FileExists(syslog)then
Setss=fs.OpenTextFile(syslog,ForAppending,true)
else
setss=fs.CreateTextFile(syslog,ForWriting,false)
endif
检测log文件是不是存在,假如存在则追加文件内容,反之则间接写文件
ss.WriteLine(li)
ss.Close
-----------log文件写进停止---------
%>

  假如你没有完整看懂下面的这段程序,就请听作者渐渐道来。FileAccess组件供应了可用来会见盘算机文件体系的办法和属性。我们可使用FileAccess组件创立FileSystemObject工具,以上程序的第一句就是使用FileAccess组件创立了一个名为fs的工具实例。在工具被创立后,你能够经由过程它会见文件,该工具没有属性,它独一的意义就是创立、翻开或读写文本文件。FileSystemObject工具有两种最经常使用的办法,一种用来创立文件,另外一种是用来翻开并读写文本文件。CreateTextFile办法取得你指定的文件名并创立该文件,它前往一个TextStream工具,你能够用该工具在文件被创立后操纵该文件,CreateTextFile办法的语法以下:
  SetobjTextStream=FileSystemObject.CreateTextFile(Filename,[Overwrite],[Unicode])
  上面作者给人人注释一下CreateTextFile办法的参数
  1、Filename包括文件路径名的字符串,能够是文件的全路径名,包含驱动器名和目次名,大概也能够只是文件名,假如只包括文件名的话,文件将被创立在站点的根目次下。
  2、Overwrite布尔量,设置成False时能够避免FileSystemObject工具在创立一个新文件时删除已存在的文件,该参数是可选的,假如没有赋值体系默许为true,具有不异文件名的已有文件会被删失落。
  3、Unicode可选参数。布尔值指明是不是以Unicode或ASCII文件格局创立文件。假如以Unicode文件格局创立文件,则该值为True;假如以ASCII文件格局创立文件,则该值为False。假如省略此部分,则假定创立ASCII文件。

  在后面的程序中我们用setss=fs.CreateTextFile(syslog,ForWriting,false)来在log文件不存在的情形下创立文件并对文件举行写操纵,这里的“ForWriting”暗示写文件。

  与CreateTextFile办法分歧,OpenTextFile办法用来取得你指定的文件名并翻开该文件,使用它所带的参数我们能够对文件举行各类分歧的操纵,和CreateTextFile办法一样,OpenTextFile办法前往一个TextStream工具,使得你能够在文件被翻开后操纵该文件。OpenTextFile办法的语法以下:
  SetobjTextStream=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)
 信任人人如今已能够感到到ASPFileAccess组件的壮大功效了,实在它远不单单能够写一些log文件,经由过程它你乃至能够绝不吃力的远程主动更新你的网站,你只需把流动格局的文本文件传送到远真个服务器上,经由过程FileAccess组件读取文件,并主动天生全新HTML页面便可,而不用再辛辛劳苦地一个一个地更新HTML文件。假如你有乐趣,你完整能够用ASP的FileAccess组件写一个本人的全主动HTML天生器,充实享用保护网站的超前轻松感。
对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-1-19 12:50:27 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
再见西城 该用户已被删除
板凳
发表于 2015-1-24 14:51:36 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
谁可相欹 该用户已被删除
地板
发表于 2015-2-1 17:09:27 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
因胸联盟 该用户已被删除
5#
发表于 2015-2-7 12:06:23 | 只看该作者
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
小妖女 该用户已被删除
6#
发表于 2015-2-21 21:10:43 | 只看该作者
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
小女巫 该用户已被删除
7#
发表于 2015-3-6 21:49:38 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
山那边是海 该用户已被删除
8#
发表于 2015-3-13 21:58:39 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-20 19:50:09 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-27 01:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表