第2章ASP的内嵌对象

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

下载第2章ASP的内嵌对象本章要点:理解ASP的内嵌对象并会使用它们。通过上面的介绍,我们对ASP已经有了一个基本的了解,如果你想编写ASP应用程序首先应该掌握一种脚本语言,如VBScript,并且熟练掌握ASP的各种内嵌对象和ActiveX组件。这些对象以及组件都可以用来拓展ASP应用程序的功能,实际上,只要掌握了内嵌对象和ActiveX组件,你就可以编写功能强大的ASP应用程序。一个对象是典型的具有方法、属性或者集合的东西,其中对象的方法决定了我们可以用这个对象做什么事情。对象的属性可以读取,它描述对象状态或者设置对象状态。对象的集合包含了很多和对象有关系的键和值的配对。举一个日常的例子,本书是一个对象,这个对象包含的方法决定了你可以怎样处理它(即使用它),比如说,去读它,把它送人作为礼物,用它当作敲门的工具,只要你愿意,甚至可以把它撕得粉碎。对象的属性即这本书的页数,作者是谁。对象的集合包含了许多键和值的配对,对书而言,每一页的页码就是键,那么值就是对应于页码的这页的内容。ASP的内嵌对象和ActiveX组件十分类似,不过,当你使用ASP时,两者之间还是存在着明显的差异。首先,一个组件可能包含不只一个对象,其次,在你使用组件之前,将要明确地创建一个实例。下面是对每一种内嵌对象的快速浏览:•Application对象:Application对象用来存储一个应用中所有用户共享的信息。例如,可以利用Application对象在站点的不同用户间传递信息。•Request对象:Request对象可以用来访问所有从浏览器到服务器间的信息,因此,可以利用Request对象来接受用户在HTML页的窗体中的信息。•Response对象:Response对象用来将信息发送回浏览器。可以利用Response对象将脚本语言结果输出到浏览器上。•Server对象:Server对象提供你运用许多服务器端的应用函数。例如,你可以利用Server对象来控制脚本语言在超过时限前的运行时间。也可以利用Server对象来创建其他对象的实例。•Session对象:Session对象用来存储一些普通用户在滞留期间的信息,可以用Session对象来存储一个用户在访问你的站点时滞留时间。•ObjectContext对象:ObjectContext对象可以用来控制ASP的执行。这种执行过程由MicrosoftTransactionServer(MTS)来进行管理。内嵌对象不同于正常的对象。在利用内嵌对象的脚本时,不需要首先创建一个它的实例。在整个网站应用中内嵌对象的所有方法、集合以及属性都是自动可访问的。2.1Response和Request对象Response对象可以输出信息到客户端。包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置cookie的值。下面例子演示了该对象的使用方法:htmlheadtitleBufferExample/title/headbody%FORi=1to500Response.Write(i&BR)NEXT%/body/html在ASP中引用对象的方法的语法是“对象名.方法名”,如上面脚本中用的Response.Write(i&“BR”)语句,其含义为引用Response对象的Write方法在屏幕上显示从1~500,每一句命令执行后结果都立即显示,你可以实时地看到执行结果。Response对象的Write方法将指定的字符串或表达式的结果写到当前的HTTP输出。方法就是嵌入到对象定义中的程序代码,它定义对象怎样去处理信息。使用嵌入的方法,对象便知道如何去执行任务而不用提供额外的指令。在某些场合下,你也可以利用缓冲区来延缓执行过程,当你利用缓冲区时,直到整个ASP执行结束才会将结果输出到浏览器上。下面是利用Response对象的Buffer属性修改后的例子:%Response.Buffer=True%HTMLHEADTITLEBufferExample/TITLE/HEADbody%FORi=1to500Response.Write(i&BR)NEXT%/body/html在ASP中设置对象属性的值的方法是“对象名.属性名=”,如上面脚本中的第一行用%Response.Buffer=True%语句将Response对象的Buffer的属性设为True。这也是和前面那个脚本仅有的一个区别。那么这页执行的时候,这个主页的所有内容会同时显示在浏览器上,这个主页会存在缓存区中直到脚本执行结束。任何对Buffer属性进行修改的语句都必须在HTML语句和ASP脚本输出语句的前面,如果在<HTML>语句或者脚本输出后面修改Buffer属性,那么你的程序就会出错。利用缓存程序可以根据某种条件来显示不同的主页,下面是随机显示的一个例子。%Response.Buffer=True%10使用ASP与SQLServer网站架设下载HTMLHEADTitle第一页/title/headBody这是第一页。/body/html%Randomize注释:初始化随机数生成器。IFInt(2*rnd)=1THENResponse.EndResponse.Clear%HTMLHEADTITLE第二页/title/headbody这是第二页。/body/html在这个例子中,使用了Response对象的两个新的方法:End方法和Clear方法。End方法会立即停止ASP的执行和相应结果。你在执行End方法时不需要考虑是否进行了缓存输出。在这个例子中,End方法被用来防止在显示第一页时第二页也显示出来。Clear方法是用来在不将缓存中的内容输出的前提下清空当前页的缓存,仅当使用了缓存输出的时候你才可以利用Clear方法,在这里面,Clear方法是用来防止显示第二个页面时第一个页面也显示出来。它把第一个页面从B缓存中清空了。Response对象中在缓存输出中还用到了另一个方法是Flush,该方法可以将缓存中的内容立即显示出来。该方法有一点和Clear方法一样,它在脚本前面没有将Buffer属性设置为True时会出错。和End方法不同的是,该方法调用后,该ASP可继续执行。一般情况下,你并不需要缓存输出一个ASP,在大的HTML主页或者运行较长的脚本中利用缓存时,用户的浏览器可能长时间没有反应,这通常会使得用户感到迷惑。如果希望根据条件显示不同主页内容,完全可以简单地利用VB脚本来做判断,例如,下面这个例子实现了上面例子的同样功能但没有使用缓存。%Randomize'初始化随机数生成器。IFINT(2*RND)=1THEN%HTMLHEADTITLE第一页/TITLE/HEADBODY这是第一页/BODY/HTML%ELSE%HTML第2章ASP的内嵌对象使用11下载HEADTITLE第二页/TITLE/HEADBODY这是第二页/body/html%ENDIF%只有一种场合下使用缓存是必须的,那就是在主页内容已经确定后,你却需要改变主页的Header。这时除了将Buffer属性设为True外别无选择。浏览器的请求和服务端的响应都包含头信息,头信息提供了有关请求和响应的附加信息,也包括了浏览器生成请求和服务端提供响应的过程信息。ASP包含了相当多的集合和方法来维护Headers。一部分方法对应于特定的任务,例如提供了站点内容分级以及站点限期时间等功能;其他的方法和集合用于一般的Headers维护。以下部分详细介绍如何使用这些集合方法来影响Headers。当浏览器在服务端接收到一个主页时,这个请求就包括了相当数量的Headers,你可以利用Request对象的ServerVariable集合来接收这些Headers,ServerVariable集合既包括了Headers也包括了服务端的一些其他信息。集合存储了相互有关系的字符串、数字、对象和其他值。集合与数组非常相近,但它在存储或取出项目时会自动扩展与搜索。另外,集合被修改后,项目的位置将会移动。可以通过集合中项目的名称、索引访问项目,也可以遍历访问项目。下面的例子将ServerVariable集合的所有内容名称显示出来。HTMLHEADTitle服务端变量/Title/HEADBODY%FOREachnameINRequest.ServerVariablesResponse.Write(pb&name&/b:)Response.Write(Request.ServerVariables(name))NEXT%/BODY/HTML显示结果为:ALL_HTTP:HTTP_ACCEPTimage/gif,image/x-xbitmap,image/jpeg,image/pjpeg,*/*HTTP_ACCEPT_LANGUAGE:enHTTP_CONNECTION:Keep_AliveHTTP_HOST:platoHTTP_USER_AGENT:Mozilla/4.01[en](WinNT;I)HTTP_COOKIE:USERID=HTTP_ACCEPT_CHARSETiso-8859-1*,utf-8ALL_RAW:Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,*/*Accept-Language:enConnection:Keep-aliveHost:platoUser-Agent:Mozilla/4.01[en](WinNT;I)Cookie:USERID=Accept-Charset:iso-8859-1,*.utf-8APPL_MD_PATH:/LM/W3SVC/1/ROOT/test/APPL_PHYSICAL_PATH:/D:\Inetpub\:AUTH_USER:CERT_COOKIE:CERT_FLAGS:CERT_ISSUER:CERT_KEYSIZE:CERT_SECRETKEYSIZE:CERT_SERIALNUMBER:CERT_ISSUER:CERT_SUBJECT:...(显示结果略)可以看出,ServerVariables集合包含了很多类型的信息,下面解释常用的信息类型:ALL_HTTP:客户端发送的所有HTTP头文件。ALL_RAW:检索未处理表格中所有的头名称。ALL_RAW和ALL_HTTP不同,ALL_HTTP在头文件名前面放置HTTP_prefix,并且标题名称总是大写的。使用ALL_RAW时,头名称和值只在客户端发送时才出现。APPL_MD_PATH:检索ISAPIDLL的(WAM)Application的元数据库路径。APPL_PHYSICAL_PATH:检索与元数据库路径相应的物理路径。IIS通过将APPL_MD_PATH转换为物理(目录)路径以返回值。AUTH_PASSWORD:该值输入到客户端的鉴定对话中。只有使用基本鉴定时,该变量才可用。AUTH_TYPE:这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。AUTH_USER:未被鉴定的用户名。CERT_COOKIE:客户端验证的唯一ID,以字符串方式返回。可作为整个客户端验证的签字。CERT_FLAGS:如有客户端验证,则bit0为1。如果客户端验证的验证人无效(不在服务器承认的CA列表中),bit1被设置为1。CERT_ISSUER:用户验证中的颁布者字段(O=MS,OU=IAS,CN=username,C=USA)。CERT_KEYSIZE:安全套接字层连接关键字的位数,如128。CERT_SECRETKEYSIZE:服务器验证私人关键字的位数。如

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功