|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;汇合|汇合年夜多半ASP内建工具撑持汇合。汇合是存储字符串、数字、工具和其他值的中央。除
在存储或掏出项目时汇合会主动扩大与搜刮外,汇合与数组十分邻近。与数组分歧的是,
汇合被修正后,项目标地位将会挪动。能够经由过程汇合中项目标称号、索引大概经由过程在集
合的一切项目中遍历会见项目。
经由过程称号和索引会见项目
经由过程利用项目称号能够会见汇合中的详细项目。比方,Contents汇合具有在Session
工具中保留的一切变量。一样也具有由Server.CreateObject创立的一切工具。假定
在Session工具中存储了以下用户信息:
可使用在汇合中存储项目时联系关系的称号会见项目。比方,上面的表达式前往字符串
“Sam”:
经由过程利用与项目联系关系的索引或号码也能够会见项目。比方,上面的表达式检索存储在
Session工具的第二个存储槽中的信息而且前往“Woo”:
ASP汇合从1入手下手编号。当在汇合中增添或删除项目时,与项目联系关系的索引将会改动。
以是不克不及以为项目标索引一直稳定。正如将鄙人面的主题中申明的那样,使用索引的
会见一样平常用来遍历汇合,或会见只读汇合中的项目。
经由过程利用速记的称号能够会见项目。ASP以特定的按次搜刮与工具联系关系的汇合。假如
在工具的汇合中特命名称的项目只呈现一次的话,能够打消该汇合的称号:
会见存储在Application或Session工具中的项目时,打消汇合称号通常为平安的。
可是,关于Request工具,最好指定汇合称号,由于该汇合极可能包括反复的称号。
遍历汇合
在汇合的一切项目中遍历能够懂得汇合中存储的项目或修正项目。遍历汇合时,必需
供应汇合称号。比方,可使用VBScript中的For...Each语句会见存储在Session
工具中的项目:
可使用VBScript中的For...Next语句遍历汇合。比方,要列出上例中存储在
Session中的三个项目,可使用以下语句。
由于一样平常不晓得存储在汇合中的项目个数,ASP撑持汇合的Count属性,这个属性返
回汇合中的项目数。可使用Count属性指定计数器的终值。
能够在剧本中利用for语句在汇合中轮回。在JScript的for语句中利用Count属
性时,为了收到更年夜的效果,应当将Count值分派给当地变量并利用该变量设置计数
器终值。如许,剧本引擎就不必要每次轮回都查寻Count的值。上面的例子展现了这
个技能:
MicrosoftJScript3.0引进了Enumerator工具。可使用该工具遍历ASP汇合。
atEnd办法指出了汇合中是不是还存在项目。moveNext办法挪动到汇合中的下一个项目。
遍历带子关头字(Subkeys)的汇合
剧本在单一cookie中嵌进相干值以削减在扫瞄器和Web服务器之间传送的cookie
数量。因而Request和Response工具的Cookies汇合可以在单一项目中具有多个值。
这些子项目或子关头字能够被单个会见。只要Request.Cookies和Response.Cookies
汇合撑持子关头字(Subkeys)。Request.Cookies只撑持读操纵;Response.Cookies只
撑持写操纵。
能够枚举Request.Cookie汇合中一切的cookie和Cookie中一切的子关头字
(Subkeys)。可是,假如在没有子关头字(Subkeys)的Cookie上遍历子关头字,将不
会发生任何了局。经由过程利用.HasKeys语法起首反省cookie是不是含有子关头字(Subkeys),
就能够制止这类情形。上面的这个例子展现了这个技能。
遍历工具汇合
Session和Application汇合能够保留数目变量大概工具实例。Contents汇合具有数
质变量和经由过程挪用Server.CreateObject天生的工具实例。StaticObjects汇合具有在
Global.asa文件中利用HTML元素创立的工具。在遍历包括工具的汇合时,能够会见
工具的标识符或工具的办法和属性。比方,假定使用程序利用一些工具创立用户帐号,
并且每一个工具有初始化办法,能够遍历StaticObjects汇合来挪用每一个初始化办法:
ASP汇合有何分歧的地方?只管在本主题中会商的ASP汇合与VisualBasic的
Collection工具十分类似,但仍是有些分歧。ASP汇合撑持Count属性和Item办法,
但不撑持Add和Remove办法。设置工具感化域工具的感化域决意哪些剧本可使
用该工具。默许情形下,当您创立工具实例时,该工具具有页感化域。统一ASP页中
的任何剧本命令都能利用该页感化域的工具;当ASP页送回客户端时,该工具即被释
放。对年夜多半工具来讲,保举的感化域是页感化域。您能够改动一个工具的感化域,使
其可被其他页的剧本利用。本主题将注释怎样利用页感化域的工具和怎样改动工具的
感化域。
利用页感化域工具在ASP页上用Server.CreateObject创立的工具在该页的保存期内
一向存在。该工具对该页的任何剧本命令都是可会见的,当ASP处置完该页时,该工具
即被开释。因而,工具具有该页的感化域或性命周期。在用VisualBasic或VBScript
编程时,要注重在ASP处置完该页之前不要开释工具。比方,以下语句常常用于经由过程将
工具变量赋以Nothing值来开释工具:SetmyObj=Nothing假如您在ASP页中包括
了该语句,那末任何利用myObj的妄图都将会前往一个预期的毛病代码。但在外部,即
使在工具开释今后,ASP仍保存对它的援用。当您在剧本中不克不及利用工具时,工具的资本
直到ASP处置完页以后才开释。一样,假如您经由过程创立另外一个工具实例并将其赋给已利用
过的工具变量来开释该工具时,ASP将保存对原工具实例的援用。对年夜多半剧本来讲,
创立多个工具大概不会发生成绩,但假如工具利用共享资本,好比数据库毗连,就有可
能呈现成绩。因为工具有页感化域,以是不要依托手工开释的工具。比方,以下的轮回
创立1001个Connection工具,它将能翻开年夜多半的毗连乃至于一个年夜型的SQL
server:总的来讲,应当只管制止在一个轮回外部创立工具。假如没法制止,您应当手
工开释被工具利用过的资本。假如Connection工具仅被创立一次,且数据资本的物理
毗连在每一个轮回中被翻开然后封闭,那末上例将会一般运转:为工具付与会话感化域
在使用程序中,关于每一个新会话,城市创立session-scope工具,而且在会话停止后会
将其开释。因而,每一个举动的会话都有一个工具。会话感化域用于从多个剧本中挪用的
工具,但只影响一个用户会话。您能够只在必要时才为工具付与会话感化域。假如的确
必要利用会话感化域,那末就必需懂得供应工具的组件的线程模子,由于它影响功能和
工具的平安情况。具体信息,请参阅本主题的“初级信息:功能成绩”。要为工具赋
予会话感化域,请将工具存储在ASPSession内建工具中,您既能够在Global.asa
文件中利用标志,也能够在ASP页上利用Server.CreateObject办法创立具有会话
感化域的工具实例。在Global.asa文件中,您可用扩大了RUNAT属性(必需设置为
Sever)和SCOPE属性(必需设置为Session)的;OBJECT>标志。以下示例创立一个
AdRotator工具的会话感化域实例:
一旦您在Session工具中存储了工具,您就能够从使用程序的任何页中会见该工具。
上面的语句利用上例中由标志创立的工具实例:在ASP页上,您也能够利用
Server.CreateObject办法将工具存储在Session内建工具中。以下示例在Session
工具中存储AdRotator工具的一个实例。要显现告白,您起首应当猎取存储在
Session工具中的AdRotator工具的实例,然后才干挪用办法来显现工具:在用标
记声明的工具被某个.asp文件中的剧本命令援用之前,ASP其实不创立实在例。
Server.CreateObject办法则当即创立该工具实例。因而,对会话感化域工具来讲,使
用标志要比Server.CreateObject属性更好。为工具付与使用程序感化域
applicatio</p>[1][2]下一页
asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般 |
|