点击这里给我发消息 点击这里给我发消息

ASP 3.0高级编程(一)

添加时间:2013-12-6
    相关阅读: 网页 设计 ASP 页面 搜索引擎 程序 HTML
 

ASP 3.0请求和响应的处理

       这两个对象是ASP所提供的内置对象中最常用的两个。在浏览器(或其他用户代理)和Web服务器之间,请求与响应中发生的信息交流可以通过ASP中的两个内置对象来进行访问和管理,这两个对象称为Request和Response对象。
       在ASP页中所要进行的工作几乎都要访问这两个对象,使用这两个对象的方式将影响页面的效率及可靠性。当然,它们的主要用途是访问用户发回到服务器的值,即从HTML页的<FORM>段获得或附在URL后面作为查询字符串,并创建合适的输出返回给用户,且它们可以共享很多相同的因素。例如两个对象都可以使用存储在客户端计算机上的cookie。
       因此,我们把内容分成两个独立的部分(每个对象一部分),并且首先从客户端与服务器这间的信息交流入手,然后再研究每一个对象。
       研究的内容是:
       · 客户端与服务器如何交流以传递Web或其他资源。
       · Request和Response对象的细节,以及它们之间的共同点。
       · 如何通过一个窗体和查询字符串访问相应的值。
       · 如何读入或创建cookie并存放在客户端的计算机上。
       · 服务器的变量是什么?如何访问和修改HTTP报头。
       · 说明其他相关条目的变化,如客户的证书使用。

客户端和服务器的交流
       为节省篇幅,后面的内容中使用“浏览器”(browser)一词。但需要记住的是,能够访问Web页面的应用程序绝不仅只有浏览器,有许多特殊的应用程序从站点上下载网页,如为那些视力有缺陷用户设计的特殊的客户端程序或者是用通常的浏览器有其他困难的人。最显而易见的例子是搜索引擎用来访问Web上的站点的 robot。全面考虑这些因素,包括普通的Web浏览器,准确的词汇应该是用户代理(user agent)。

页面请求的对话
       当一个浏览器向Web站点提出页面请求时,显然必须告诉服务器,其请求的是哪一个页面。首先要做的是通过域名与服务器建立连接,然后提供所请求的页面的全路径和名称。为什么要全路径和名称?Web是一个无国界的环境,所以必须创造一个会话标识每个客户(将在以后介绍ASP如何做到这点)。
       这就意味着每当服务器完成向客户发送页面后,服务器就彻底忘记了这个客户。因此,当客户请求下一个页面时,与一个新的访问者是完全相同的。服务器无法记住这个客户,相应的,也就无法判断它们上次请求的页面是哪一个。因为,不能使用相对路径来提供一个页面,即使页面包含一个相对的链接也不行,例如:
       <A HREF=”Download.asp”>Next Page</A>
       浏览器将自动建立完整的新页面的URL,方法是使用当前页的域和路径;或使用页面<HEAD>段中的<BASE>元素,告诉浏览器一个页面中所有链接的其URL是什么。例如:
       <BASE HERF=http://www.wrox.com/Store>
       当把鼠标指向一个页面的链接时,可在浏览器的状态栏中看到。当前页面的路径和当前域名或基域名或基路径已经与请求的页面名结合在一起了。
1、 客户请求的细节
所请求页面的全路径和名称的组合是浏览器请求页面时发住服务器的唯一住处浏览器的请求也能包含浏览器宿主的住处和客户端运行的操作系统。实际的信息内容将随着浏览器的不同而有相应的变化,只有很少一部分能够由其他的应用程序如搜索引擎robot提供。为了更清楚地了解该信息,下面是从IE 5.0发出的一个对页面>语句后面的第一行。ASP 3.0缺省设置缓冲为开(True),而在早期版本中缺省为关(False)

CacheControl”setting”
读/写,字符型,设置这个属性为“Public”允许代理服务器缓存页面,如为“Private”则禁止代理服务器缓存的发生 

Charset=”value”
读/写,字符型,在由服务器为每个响应创建的HTTP Content-Type报头中附上所用的字符集名称(例如:ISO-LATIN-7) 

Content Type=”MIME-type”
读/写,字符型,指明响应的HTTP内容类型,标准的MIME类型(例如“text/xml”或者“Image/gif”)。假如缺省,表示使用MIME类型“text/html”,内容类型告诉浏览器所期望内容的类型

Expires minutes
读/写,数值型,指明页面有效的以分钟计算的时间长度,假如用户请求其有效期满之前的相同页面,将直接读取显示缓冲中的内容,这个有效期间过后,页面将不再保留在私有(用户)或公用(代理服务器)缓冲中

Expires Absolute #date [time]#
读/写,日期/时间型,指明当一个页面过期和不再有效时的绝对日期和时间

IsClientConnected
只读,布尔型,返回客户是否仍然连接和下载页面的状态标志。在当前的页面已执行完毕之前,假如一个客户转移到别一个页面,这个标志可用来中止处理(使用Response.End方法)

PICS(“PICS-Label-string”)
只写,字符型,创建一个PICS报头定义页面内容中的词汇等级,如暴力、性、不良语言等

Status=”Code message”
读/写,字符型,指明发回客户的响应的HTTP报头中表明错误或页面处理是否成功的状态值和信息。例如“200 OK”和 “404 Not Found”

c)        Response对象的方法
Response对象提供一系列的方法,如下表所示,允许直接处理为返回给客户端而创建的页面内容。
Response对象的方法及说明
方法
说明

AddHeader(“name”,”content”)
通过使用name和Content值,创建一个定制的HTTP报头,并增加到响应之中。不能替换现有的相同名称的报头。一旦已经增加了一个报头就不能被删除。这个方法必须在任何页面内容(即text和HTML)被发住客户端前使用

AppendToLog(“string”)
当使用“W3C Extended Log File Format”文件格式时,对于用户请求的Web服务器的日志文件增加一个条目。至少要求在包含页面的站点的“Extended Properties”页中选择“URL Stem”

BinaryWrite(safeArray)
在当前的HTTP输出流中写入Variant类型的SafeArray,而不经过任何字符转换。对于写入非字符串的信息,例如定制的应用程序请求的二进制数据或组成图像文件的二进制字节,是非常有用的

Clear()
当Response.Buffer为True时,从IIS响应缓冲中删除现存的缓冲页面内容。但不删除HTTP响应的报头,可用来放弃部分完成的页面

End()
让ASP结束处理页面的脚本,并返回当前已创建的内容,然后放弃页面的任何进一步处理

Flush()
发送IIS缓冲中所有当前缓冲页给客户端。当Response.Buffer为True时,可以用来发送较大页面的部分内容给个别的用户 

Redirect(“url”)
通过在响应中发送一个“302 Object Moved”HTTP报头,指示浏览器根据字符串url下载相应地址的页面 

Write(“string”)
在当前的HTTP响应信息流和IIS缓冲区写入指定的字符,使之成为返回页面的一部分

在本书中源代码的例子里,读者会发现一系列的页面,演示如何使用这些由Request和Response对象提供的属性、方法和集合。在从Wrox Web站点下载的Chapter02目录下,有本章其余部分的示例页面。


 

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册