来 源: 互联网
作 者: 不祥
发表日期: 2005-12-17 15:11:10
阅读次数: 96
文章标题:
ASP → ASP 3.0高级编程(一)
查看权限: 普通文章
查看方式: 查看:[
大字 中字 小字 ] [双击滚屏]
正 文:
ASP 3.0高级编程(一) |
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发出的一个对页面http://www.wrox.com/Store/ Download.asp的请求信息: 7/8/99 10:27:16 Sent GET /Store/Download.asp HTTP/1.1 Accept: application/msword, application/vnd.ms-execl, application/vnd.ms- powerpoint, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x- comet, */* Accept-Language: en-us Encoding: gzip, deflate Referer: http://ww.wrox.com/main_menu.asp Cookie: VisitCount=2&LASTDATE=6%2F4%2F99+10%3A10%3A13+AM User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Host: 212.250.238.67 Connection: Keep-Alive 从中可以看出,这些信息中有关于用户代理和用户连接的细节(如缺省的语言),也有能够接受的文件或应用程序的类型列表,这些都是MIME类型的,在后面将会见到更多。浏览器能够接受几种图像文件及多种Microsoft Office文件类型。“标准”的文件类型,如tesx/html和text/text没有列在其中。文件列表中 */*表示可向浏览器发回任何类型的文件,由浏览器解释或通过一个插件(plug-in)应用程序来进行解释。 cookie: 条目包含的cookie存放在客户端的计算机上,并仅对该域有效。假如请求是点击链接的结果,而不是在浏览器的地址栏直接输入URL,则Referer:条目被显示出来,它包含了链接页面的完整的URL。 Host:条目包含客户计算机的IP地址或名称。然而,这还不足以准确辨别客户机。因为它们通过ISP连接时,IP地址是动态分配的,或者通过一个代理服务器连接时,IP地址是代理机的而不是实际的客户机的。 2、 服务器响应的细节信息 为响应上述的请求,并对匿名的浏览器(即用户不必提供用户名和访问口令)提供请求的页面,下面的内容是从服务器发往客户机的: 7/8/99 10:27:16 Received HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Connection: Keep-Alive Date: Thu, 8 Jul 1999 10:27:16 GMT Content-Type: text/html Accept-Ranges: bytes Content-Length: 2946 Last-Modified: Thu, 8 Jul 1999 10:27:16 GMT Cookie: VisitCount=3&LASTDATE=7%2F8%2F99+10%3A27%3A16+AM <HTML> … rest of page … </HTML> 可以看出服务器向客户端说明自己所用的软件及版本,第一行表明所使用的是HTTP协议,及返回码的状态。信息“200 OK”表示请求被接受并得到了满足。后面的信息是被返回的页面的细节,包括MIME类型(Content-Length:)、大小(字节)、最近更改时间,和返回客户端存储的cookie。响应中的其他信息是页面内容的信息流。 在某些情况下,服务器响应一个请求后,不能返回一个页面,也许因为页面不存在,或都客户没有相应的权限来访问它。我们将在后面讨论安全问题。现在,对于请求页面不存在的情况(例如用户在浏览器的地址栏输入了错误的URL),返回的信息开头为: 7/8/99 14:27:16 Received HTTP/1.1 404 Not Found Server: Microsoft-IIS/5.0 … 这里,状态码和信息表明客户请求的页面无法找到。浏览器可使用这个信息向用户显示相应的信息(这种情况在IE 5.0中不显示服务器的响应信息,而显示相应“帮助性”的错误提示页面),也可显示服务器创建的缺省页面(依赖服务器的设置)。
Request和Response对象 从ASP中能够应用客户请求和服务器响应的细节是通过ASP内置的Request和 Response对象来实现的。 · Request对象:为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供的全部信息。这包括能指明浏览器和用户的HTTP变量,在这个域名下存放在浏览器中的cookie,任何作为查询字符串而附于URL后面的字符串或页面的<FORM>段中的HTML控件的值。也提供使用Secure Socket Layer(SSL)或其他加密通信协议的授权访问,及有助于对连接进行管理的属性。 · Response对象:用来访问服务器端所创建的并发回到客户端的响应信息。为脚本提供HTTP变量,指明服务器和服务器的功能和关于发回浏览器的内容的信息,以及任何将为这个域而存放在浏览器里新的cookie。它也提供了一系列的方法用来创建输出,例如无处不在的Response.Write方法。 1、 Request对象成员的概述 a) Request对象的集合 Request对象提供了5个集合,可以用来访问客户端对Web服务器请求的各类信息,这些集合如下表: Request对象的集合及说明 集合名称 说明
ClientCertificate 当客户端访问一个页面或其他资源时,用来向服务器表明身份的客户证书的所有字段或条目的数值集合,每个成员均是只读
Cookies 根据用户的请求,用户系统发出的所有cookie的值的集合,这些cookie仅对相应的域有效,每个成员均为只读
Form METHOD的属性值为POST时,所有作为请求提交的<FORM>段中的HTML控件单元的值的集合,每个成员均为只读
QueryString 依附于用户请求的URL后面的名称/数值对或者作为请求提交的且METHOD属性为GET(或者省略其属性)的,或<FORM> 中所有HTML控件单元的值,每个成员均为只读
ServerVariables 随同客户端请求发出的HTTP报头值,以及Web服务器的几种环境变量的值的集合,每个成员均为只读
b) Request对象的属性 Request对象唯一的属性及说明如下表所示,它提供用户请求的字节数量的信息,它很少用于ASP页,我们通常关注指定值而不是整个请求字符串。 属性 说明
TotlBytes 只读,返回由客户端发出的请求的整个字节数量
c) Request对象的方法 Request对象唯一的方法及说明如下表所示,它允许访问从一个<FORM>段中传递给服务器的用户请求部分的完整内容。 Request对象的方法及说明 方法 说明
BinaryRead(count) 当数据作为POST请求的一部分发往服务器时,从客户请求中获得count字节的数据,返回一个Variant数组(或者 SafeArray)。如果ASP代码已经引用了Request.Form集合,这个方法就不能用。同时,如果用了BinaryRead方法,就不能访问Request.Form集合
2、 Response对象成员概述 a) Response对象的集合 Response对象只有一个集合,如下表所示,该集合设置希望放置在客户系统上的cookie的值,它直接等同于 Request.Cookies集合。 Response对象的集合及说明 集合名称 说明
Cookies 在当前响应中,发回客户端的所有cookie的值,这个集合为只写
b) Response对象的属性 Response对象也提供一系列的属性,可以读取(多数情况下)和修改,使响应能够适应请求。这些由服务器设置,我们不需要设置它们。需要注意的是,当设置某些属性时,使用的语法可能与通常所使用的有一定的差异。 Response对象的属性及说明 属性 说明
Buuffer=True|False 读/写,布尔型,表明由一个ASP页所创建的输出是否一直存放在IIS缓冲区,直到当前页面的所有服务器脚本处理完毕或 Flush、End方法被调用。在任何输出(包括HTTP报送信息)送住IIS之前这个属性必须设置。因此在.asp文件中,这个设置应该在<%@LANGUAGE=…%>语句后面的第一行。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对象提供的属性、方法和集合。 |
分享到:
相关推荐
ASP3.0高级编程技术是Web开发领域中的一个重要里程碑,它是Active Server Pages的第三个主要版本,主要用于构建动态、交互式的网站。在这个版本中,开发者能够利用更强大的功能和改进的性能来创建复杂的Web应用程序...
本书《ASP3.0高级编程》应该是针对这一技术的深入解析和实践指导。 1. **ASP3.0基础**:ASP3.0的核心概念包括脚本语言支持、服务器端控件、内置对象等。学习者应掌握如何创建基本的ASP页面,理解Response、Request...
ASP3.0高级编程是针对Web开发人员深入学习ASP(Active Server Pages)技术的重要参考资料。在ASP3.0中,微软引入了许多增强功能,使得它成为构建动态网站和Web应用程序的强大工具。本教程旨在帮助开发者掌握ASP3.0的...
1.2.2 处理一个ASP文件 7 1.3 相关设置问题和管理 12 1.3.1 IIS的安装 12 1.3.2 IIS管理工具 15 1.3.3 常见的管理任务 18 1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中...
1.2.2 处理一个ASP文件 7 1.3 相关设置问题和管理 12 1.3.1 IIS的安装 12 1.3.2 IIS管理工具 15 1.3.3 常见的管理任务 18 1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中...
ASP.NET MVC3.0 是微软开发的一个开源框架,用于构建高度可测试和可维护的Web应用程序。...通过阅读《ASP.NET MVC3.0 高级编程》这本书,你可以获取更多关于这些主题的详细信息,掌握实际开发中的最佳实践。
通过深入研究"ASP 3.0高级编程",开发者不仅可以熟练运用ASP 3.0的各种特性和功能,还能为向更现代的技术栈过渡打下坚实的基础,例如ASP.NET或Node.js等。不断学习和适应新的技术,是IT行业从业者保持竞争力的关键。
ASP 3.0高级编程.
通过"精通ASP3.0网络编程"的学习,你不仅将掌握ASP3.0的核心技术,还能培养解决实际问题的能力,从而成为一名熟练的Web开发者。在实践中不断磨炼,你将能够构建出高效、安全且用户友好的Web应用程序。
本书是C# 领域久负盛名的经典著作,深入全面地叙述了C# 编程语言和.NET...另外,还介绍了最新的C# 3.0 编程语言和LINQ 编程技术。本书由微软C# MVP Andrew Troelsen 编写,历经多次修订,适合各层次.NET 开发人员阅读。
在"ASP.NET MVC3.0 高级编程完整版"中,我们可能涵盖以下关键知识点: 1. **MVC模式**:MVC是一种软件设计模式,将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型负责处理...
在"ASP3.0高级编程_Part1"中,这些知识点可能被详细讲解,并结合实际案例进行阐述,以帮助读者理解并掌握ASP.NET 3.0的高级特性和最佳实践。通过阅读给出的PDF文件(01.PDF至05.PDF),读者将有机会深入学习这些内容...
在这个“ASP3.0高级编程_Part2”中,我们将会深入探讨ASP.NET 3.0的一些核心概念和技术,包括但不限于控件编程、数据绑定、状态管理、安全性以及性能优化。 1. **控件编程**:ASP.NET 3.0引入了大量服务器控件,如...
《ASP.NET 3.0高级编程》是一本深入探讨ASP.NET技术的专业书籍,它涵盖了ASP.NET 3.0的核心概念和高级特性。该书通过图文并茂的方式,为读者提供了丰富的学习资源,还配备有详细的书签,使得阅读和查阅变得极其方便...
### 浅谈ASP 3.0高级编程(一) #### 引言 本文旨在探讨ASP 3.0中关于请求和响应对象的高级编程技术。ASP(Active Server Pages)是一种服务器端脚本环境,用于创建动态网页。在ASP 3.0版本中,开发者可以利用...
ASP 3.0高级编程是一种高级的编程技术,用于创建动态的网页应用程序。ASP 3.0提供了许多高级的功能,如数据绑定、服务器端验证、会话管理等,使得开发者能够快速创建高级的网页应用程序。 本文档主要介绍了ASP 3.0...
ASP 3.0 网页制作教程