Request对象及其使用.ppt
1 课前导读2 课堂教学3 上机练习4 课后作业,Request对象及其使用,1 课前导读 输入、处理和输出是所有程序设计语言的基本模式,ASP作为一种类程序设计语言也不例外。在ASP中,Request和Response对象分别完成输入和输出的大部分功能,是ASP技术中非常重要的两个对象:Response对象:用来访问服务器端所创建的并发回到客户端的响应信息,包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置cookie的值。它也提供了一系列的方法用来创建输出,例如无处不在的Response.Write方法。,Request对象:为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供的全部信息。这包括能指明浏览器和用户的HTTP变量,在这个域名下存放在浏览器中的cookie,任何作为查询字符串而附于URL后面的字符串或页面的段中的HTML控件的值。也提供使用SecureSocketLayer(SSL)或其他加密通信协议的授权访问,及有助于对连接进行管理的属性。值得一提的是:虽然Request对象的属性与方法各有一个,比Response对象的9个属性8种方法少了许多,但Request对象的集合确有5种,除Cookies集合与Response对象的Cookies集合相对应外,新增的4种集合大大丰富了Request对象获取输入信息的能力。,2 课堂教学 2.1 Request对象概述 2.2 ASP与表单的交互 2.3 使用Form集合 2.4 使用Querystring集合 2.5 使用Cookies集合 2.6 使用ClientCertificate集合,2.1 Request对象概述 1.Request对象的集合 2.Request对象的属性 3.Request对象的方法 4.Request对象的使用,2.1 Request对象概述 Request 对象是负责从客户端浏览器获取用户信息的对象。它是ASP中重要的服务器内置对象,它连接着Web服务器和Web客户端程序。利用Request对象可以接收基于HTTP请求的所有用户信息,如用Post方法或Get方法传送来的参数以及Cookie和Server Variable等等。,1.Request对象的集合 Request对象提供了5个集合,可以用来获取客户端对Web服务器请求的各类信息,其说明见表8-1。表8-1 Request对象的集合及说明,在这些集合之中,最常使用的是Form、Cookies和QueryString集合。,2.Request对象的属性 Request对象唯一的属性是TotalBytes,它提供关于用户请求的字节数量的信息:返回由客户端发出的请求信息的字节数。使用中通常关注客户端各项请求信息的值而非整个请求字符串,因此该属性很少被用于ASP页。3.Request对象的方法 Request对象唯一的方法是BinaryRead,它允许访问从用户页面段中传递给服务器的请求信息的完整内容。其语法格式为:Request.BinaryRead(count),说明:count表示当数据作为POST请求的一部分发往服务器时,从客户请求中获得数据的字节数。该方法返回一个Variant数组(或者SafeArray)。如果ASP代码已经引用了Request.Form集合,这个方法就不能再用。同样,如果用了BinaryRead方法,也不能再访问Request.Form集合。,4.Request对象的使用 在ASP中,当客户端请求一个页面或传递一个表单时,Request对象为脚本提供了客户端浏览器所提供的全部信息,包括用户请求的所有信息、用户为该域名存放在浏览器下的Cookie、使用Secure Socket Layer(SSL)或其它加密通信协议的授权访问以及对连接进行管理的属性等。Request对象可以利用集合、属性、方法等来进行参数的传递。其语法格式为:Request.集合|属性|方法(变量),Request对象中有5个集合可以用来完成客户端对ASP服务器的请求的响应。实际上Request对象是由一群对象的集合组成,在引用客户端页面定义的变量时,有多种方法可以使用。例如,要在Request对象的Form中取得名为“姓名”的信息,可以使用下述赋值命令:name=Request.Form(姓名)也可以不指定集合名(Form),直接使用命令:name=Request(姓名)程序会以QueryString、Form、Cookies和ServerVariables的顺序搜索所有集合,当发现一个匹配的变量时,就认定它是要引用的成员。当然,编程实践中,为避免不同集合中同名变量引用的二义性,最好显式地指定集合。,2.2 ASP与表单的交互 在动态网页设计中,表单是必不可少的元素,许多功能的实现都与表单密不可分。表单的主要功能是接受用户填写在表单中的文字、选择项等内容,在HTTP的POST方法之后,由客户端浏览器将信息发送到服务器端。由表单接受用户输入的信息一般要按照程序预设的逻辑判断进行检查,这种检查根据需要可以在客户端或服务器端进行。客户端的逻辑判断一般与表单放在一个页面内,常适用于较为简单的判断;服务器端的逻辑判断只能由表单内action属性所指向的ASP网页来完成,由于服务器端有功能更为强大的对象模型,能实现更为复杂的逻辑判断,因此适用于复杂的逻辑判断。,网页中的表单与集合Form是两个不同的概念,虽然它们的英文名称相同。表单的功能是在客户端接受用户的输入信息,是在客户端由浏览器解释的HTML标记,而集合Form则是在服务器端的一种数据结构。一般情况下,客户端表单的信息在执行网页的Post方法后,在服务器端Request对象的Form集合中会有相应的量与之对应。,在HTML网页中,表单以标记开始和结束。表单标记的语法格式为:其中“URL”设置表单处理程序的相对或绝对位置(若要将表单数据寄到电子邮件信箱,可以设置该电子邮件信箱的URL;若没有设置Action属性的值,表示使用默认的表单处理程序);“传送方式”用于指明交互表单的信息传送方式,有Post和Get两种。,其他属性及其说明见表8-2。表8-2 表单的其他属性说明,在表单中可以使用、等控件来定义表单信息项,参见第6课。,单击表单中的“Submit”控件,将触发表单的提交事件:onSubmit;单击表单中的“Reset”控件,将触发表单的重置事件:onReset。使用表单传送信息的方式通常有下述三种:由HTML网页中的表单传送信息给处理该信息的ASP文件;由ASP文件中的表单传送信息给另一个ASP文件,后者处理该信息;在ASP文件中的表单所传送的信息由其自身进行处理。其中第3种方式效率较高,但编程较复杂。,【例8-1】ASP与表单的交互。使用HTML网页中表单输入并提交信息,网页文件名为8_1.htm,其代码如下:利用表单输入信息 请输入 姓名:性别:男 女,当用户在浏览器中输入表单数据并单击“提交”按钮后,服务器端的表单处理程序8_1_1.asp可以利用Request对象读取浏览器端的数据并返回相应信息。表单处理程序8_1_1.asp的代码如下:使用Request对象获得表单信息 欢迎您登录本站点 如不对,返回,上例可以改为使用一个ASP文件传送和处理信息。【例8-2】表单所传送的信息由其所在的ASP文件自身进行处理。代码如下:利用表单输入信息 ASP与表单的交互 then Response.write 欢迎登录本站点,Response.write 您是&xm if xb=男 then Response.write 大侠 else Response.write 侠女 end if Response.write 如不对,返回 Response.end end if%,请输入 姓名:性别:男 女,2.3 使用Form集合 当使用表单的Post方式提交数据时,表单中的数据被保存在Request对象的Form集合中。使用Form集合来传递数据的语法格式如下:Request.Form(element)(index)|.Count 其中,element为Form集合所要检索的表单元素(控件)名称;Index用于指定表单元素多个值中的某一个,当然此表单元素有多个值时此项才有意义;Count用于指定表单某元素的值的个数。,1.读取Form集合中特定元素对象的值2.读取Form集合中所有元素对象的值3.读取Form集合的某元素对象的特定值4.读取Form集合的某元素对象的全部参数值,1.读取Form集合中特定元素对象的值【例8-3】读取Form集合中特定元素对象的值。首先建立一个输入数据的HTML表单文件8_3.htm,其代码如下:输入数据的表单 输入数据的表单 姓名:性别:男 女 密码:爱好:音乐 汽车 钓鱼 集邮 绘画,学历:小学 中学 大专 本科 研究生 生活格言:单击“提交”按钮,调用表单处理程序8_3.asp将用户输入的信息传递给服务器,经处理后反馈给用户,显示结果。,文件8_3.asp的代码如下:Request对象的Form集合示例 Request对象的Form集合示例 欢迎您登录本站点)Response.write(您的性别是:&Request.Form(xb)&)Response.write(您的密码是:&Request.Form(mm)&)Response.write(您的爱好是:&Request.Form(ah)&)Response.write(您的学历是:&Request.Form(xl)&)Response.write(您的生活格言是:)Response.Write Request.Form(adage)&%这些信息对吗?如不对,返回,2.读取Form集合中所有元素对象的值 上面介绍了如何传递Form集合中特定元素对象的值,下面介绍如何读取Form集合中所有元素对象的值。【例8-4】在例8-3中使用循环语句读取Form集合中所有元素对象的值。有两种循环语句可以读取Form集合中所有元素对象的值。,使用“For each In”循环语句,将文件8_3.asp的代码改为:用For each In语句读取Form集合示例 用For each In语句读取Form集合示例 欢迎您登录本站点)Next%这些信息对吗?如不对,返回,使用“Fornext”循环语句,将文件8_3.asp的代码改为:用Fornext语句读取Form集合示例 Fornext语句读取Form集合示例 欢迎您登录本站点)Next%这些信息对吗?如不对,返回 这种方法不能得到对象的名称,显示结果如图8-4所示。,3.读取Form集合的某元素对象的特定值 当Form集合中的元素对象具有多个值时(如checkbox、select等控件对象),欲读取某个特定的参数可以使用Index来读取。【例8-5】读取Form集合的某个多值元素的特定值。输入数据的HTML表单文件8_5.htm同8_3.htm,表单处理程序8_5.asp的代码如下:读取Form集合的某个多值元素的特定参数值 读取Form集合的某个多值元素的特定参数值 欢迎您登录本站点)%这些信息对吗?如不对,返回,运行结果,4.读取Form集合的某元素对象的全部参数值 与读取Form集合中所有元素对象的值一样,也可以采用两种循环语句来读取Form集合的某元素对象的全部参数值。以Fornext循环为例。【例8-6】读取Form集合的某元素对象的全部参数值,如图8-6所示。输入数据的HTML表单文件8_6.htm同8_3.htm,表单处理程序8_6.asp的代码如下:,读取Form集合的某元素对象的全部参数值 读取Form集合的某元素对象的全部参数值 欢迎您登录本站点)Next%这些信息对吗?如不对,返回 程序运行结果。说明:在利用Form集合读取参数时,与之相对应的HTML页面中的表单的Method属性一定要设置成Post才行,否则将无法读取参数。,2.4 使用Querystring集合 Querystring集合是Request对象中最常用的另外一个集合,与Form集合不同,Querystring集合读取参数时,HTML表单的Method应设置成Get。除了读取表单对象传递的参数之外,Querystring集合还可以通过读取HTTP查询字符串中的参数值来传递参数。使用Querystring集合的语法格式如下:Request.Querystring(变量)(index)|.Count 其中,“变量”为在HTTP查询字符串中指定要检索的变量名称;Index用于检索变量多个值中的某一个,当然此变量有多个值时此项才有意义;Count用于指定Querystring中某变量值的个数。,2.4 使用Querystring集合1.利用Querystring集合读取 表单的参数2.利用Querystring集合读取 HTTP查询字符串中的参数,1.利用Querystring集合读取表单的参数 利用Querystring集合读取表单的参数应将表单的Method属性设置为Get。其方法与使用Form集合相似。【例8-7】利用Querystring集合读取表单的参数。输入数据的HTML表单文件8_7.htm与8_3.htm相似,只是表单的Method属性设置为Get,表单处理程序8_7.asp的代码如下:,Request对象的Querystring集合示例 Request对象的Querystring集合示例 欢迎您登录本站点)Response.write(您的性别是:&Request.Querystring(xb)&)Response.write(您的密码是:&Request.Querystring(mm)&)Response.write(您的爱好是:&Request.Querystring(ah)&)Response.write(您的学历是:&Request.Querystring(xl)&)Response.write(您的生活格言是:)Response.Write Request.Querystring(adage)&%这些信息对吗?如不对,返回,运行结果,2.利用Querystring集合读取HTTP查询字符串中的参数 HTTP查询字符串中的变量值由问号(?)后面的值指定。Querystring集合可以检索HTTP查询字符串中的变量值。读取Querystring中某个变量值有三种方法:通过Request(变量)读取,其中“变量”是指Querystring集合的变量。,【例8-8】通过Request(variable)方法读取Querystring的某个变量。编写ASP程序8_8.asp如下:通过Request(variable)方法读取Querystring的变量 通过Request(variable)方法读取Querystring的变量 ASP培训班通讯录 赵一 钱二 张三 李四 王五 孙六 该程序提供链接方式(链接到ASP程序8_8_1.asp),传递HTTP查询字符串,运行结果。,ASP程序8_8_1.asp通过Request(variable)方法读取Querystring的变量,其代码如下:通过Request(variable)方法读取Querystring的变量 通过Request(variable)方法读取Querystring的变量 的通讯录是 电话:住址:,通过Request.Querystring(变量)读取,其中“变量”是Querystring集合的变量。只需将ASP程序8_8_1.asp改为:通过Request.Querystring(variable)方法读取Querystring的变量 通过Request.Querystring(variable)方法读取Querystring的变量 的通讯录是 电话:住址:,通过Request.Querystring(Serial)读取,其中Serial是Querystring集合的变量的序号。将ASP程序8_8_1.asp改为:通过Request.Querystring(variable)方法读取Querystring的变量 通过Request.Querystring(variable)方法读取Querystring的变量 的通讯录是 电话:住址:三种方法所得到的结果是相同的。,2.5 使用Cookies集合 Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息.Cookies中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序。当用户第一次访问网站时,可以利用Response对象的Cookies集合将数据存储到客户端计算机,当用户再次访问此网站时,则可利用Request对象的Cookies集合取得相关信息。,2.5 使用Cookies集合 1.Cookies技术 2.Cookies的特点 3.Cookies的属性 4.Cookies的使用,1.Cookies技术 cookies是一种Web服务器通过浏览器在访问者的硬盘上存储信息的手段。而将cookies用于INTERNET的本意是为了克服HTTP天生的无记录状态,众所周知,浏览器与Web服务器是利用HTTP进行通信的,而HTTP又是无记录的,当一个请求发送到Web服务器时,无论其是否是初次来访,服务器都会把它当作第一次来对待,根本没有对它的记忆,为了克服这一缺陷,客户端永久性的cookies应运而生。编写cookies文件时,用户需要的信息主要有cookies的截止日期、cookies访问域名的URL、cookies变量名称和一些与cookies变量有联系的数据。,Cookies的作用:(1)它可以让Web站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径;(2)它可以告诉在线广告商广告被点击的次数(3)它可让用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点(4)它还可以帮助站点统计用户资料以实现个性化服务。,2.Cookies的特点 在HTTP协议下,Cookies仅仅是一个文本文件,是服务器在浏览器端写入的小文件。Cookies存放在浏览器端的本机磁盘上,而不是存放在服务器端。通常,Cookies包含用户的有关信息(如身份识别号码、密码、用户在Web站点上购物的方式或用户访问该站点的次数等)。无论何时用户连接到服务器,Web站点都可以访问Cookies信息。,使用Cookies的好处有下列几点:可以自由决定Cookies的生命周期,需要的话,甚至可以将Cookie的生命周期设置成数周、数月或数年,不必担心cookies会因自动消失而失去某些信息。由于cookies是存放在浏览器端的本机磁盘上,故不会占用服务器端的磁盘空间。(Cookies是记录在浏览器的信息,而其他ASP对象的信息存储在Server端)cookies可以记录浏览者的个人信息,因此,站点的制作者就可以根据cookies记录的信息,设计出独具浏览者个人风格的网页或信息。,使用cookies的缺点:若浏览者禁止服务器在浏览器端写入cookies,cookies就无法记录个人信息。只能记录字符串、数值等简单的数据类型,无法记录对象、数组等复杂的数据类型。由于cookies存放在浏览器端,所以它可能被浏览者删除或拒绝写入。cookies会造成安全上的威胁,导致个人信息被窃取。,3.Cookies的属性 Cookies共有五种属性,指定cookies的有关信息。Cookies属性及其说明见表8-3。表8-3 Cookies属性及其说明,4.Cookies的使用 Cookies是通过Response对象的Cookies集合来创建的,当然,如果Cookies已存在,则可以通过Response对象来设置新的Cookies值并删除旧值。其语法格式如下:Response.Cookies(cookies名)(key)|.属性=值 说明:cookies名是用户自定义的Cookies名称;key为可选参数,如指定Key,则Cookies就是一个字典,该参数值将被设置为“值”,并可以在以后的接收中使用;,“值”指定分配给Cookies属性的值。属性是指Cookies属性。Cookies默认的生命周期起始于它被写入浏览器端的那一刻开始,结束于浏览器结束执行时;如果要设置Cookies的存在期限,可以使用Response.Cookies(name).Expries属性;当存在期限截止时,Cookies将自动从浏览器端的本机磁盘上删除。Response对象的Cookies集合用于写入Cookies,而Request对象的Cookies集合则可以读出Cookies并向服务器端传递。,(1)不带Key的Cookies的创建和读取 对于不带Key的Cookies的创建,只要指定Cookies的参数和其相应的值即可。【例8-9】创建两个cookies:myBox和mySphere。如下列程序所示:Cookies示例,代码以8-9.asp存盘,并运行即创建了Cookies。创建好Cookies以后,可以通过如下的语句读取相应的值:Request.Cookies(cookies名)其中,cookies名是已创建的Cookies的名称。,【例8-10】读取8-9.asp创建的Cookies中“myBox”的值。8-10.asp的代码如下:读取不带Key的Cookie 读取不带Key的Cookie&)if Response.Cookies(mybox).Haskeys=False then Response.Write(mybox未带Key)Else Response.Write(mybox带有Key)end if%,如果只是在当前的网页里使用Cookies,则上面的语句已经足够了。如果希望在重新启动浏览器后仍旧可以识别这个Cookies,就必须将Cookies存入到浏览器的文件当中。这只需设置Cookies在客户端可以保存的时间。将8-9.asp改为如下代码:Cookies示例,其中date()+7表示保存的时间为7天。每一个Web服务器都会产生一个与其网站相关的Cookie文件名称,并将其储存在客户端的计算机中。通常,如果使用Win98/Me系统,Cookie文件存放在C:WindowsCookies目录中;如果使用的是Win2000/XP系统,Cookie文件存放在C:Documents and Settings中该用户目录下的Cookies子目录中。,(2)带Key的Cookies的创建和读取 一个Cookies可以有多个值(这有点像数组),这样的Cookie被称为Cookies字典,Cookies字典中每个Cookie的值被分配给一个Key(数组下标),可以设置指定的Cookie(Key)的值。【例8-11】创建一个Cookies字典:myBox,该Cookie包含3个值:30、40、50,其Key分别是:length、width、height。程序8-11.asp代码如下:,创建一个Cookies字典示例 说明:在指定其属性值时,不能带Key,否则会产生错误。如下述代码将出现“运行错误”。Response.Cookies(myBox)(height).Expires=date()+7,对于Cookies字典,可以通过如下的语句来读取相应的值:Response.Cookies(cookie名)(Key名)其中,“Key名”是已创建的Cookies字典的一个Key的名称。也可以通过如下语句读取:Response.Cookies(Name)(Serial)其中,Serial是已创建的Cookies字典的Key的序号。,【例8-12】读取Cookies字典myBox的值。程序8-12.asp代码如下:读取带Key的Cookies 读取带Key的Cookies Response.Write(Request.Cookies(myBox)(length)&,)Response.Write(Request.Cookies(myBox)(width)&,)Response.Write(Request.Cookies(myBox)(height)&)Response.Write(Request.Cookies(myBox)(1)&,)Response.Write(Request.Cookies(myBox)(2)&,)Response.Write(Request.Cookies(myBox)(3)&)%程序8-12.asp运行结果如图8-11所示。,(3)Cookies的重建 对于已建立的Cookies,要重建它,只要使用如下的语句即可重建:Response.Cookies(Name)=Value若是建立Cookies字典,则还要加上相应的Key值。,3 上机练习 在Web网页中,表单是必不可少的元素,它对于Web页面交互功能的实现起非常的作用。【练习8-1】使用表单和Form集合的技术,编写实现例8-3中数据交换的ASP程序,显示结果。,图8-13 数据交换的ASP程序,程序名为:lx8_1.asp,代码如下:then Response.write 欢迎登录本站点!Response.write 您的姓名是:&Request.Form(xm)&Response.write 您的性别是:&Request.Form(xb)&Response.write 您的密码是:&Request.Form(mm)&Response.write 您的爱好是:&Request.Form(ah)&Response.write 您的学历是:&Request.Form(xl)&Response.write 您的生活格言是:Response.Write Request.Form(adage)&Response.Write 这些信息对吗?Response.Write 如不对,返回 Response.end end if%请输入您的有关数据,姓名:性别:男 女 密码:爱好:音乐 汽车 钓鱼 集邮 绘画 学历:小学 中学 大专 本科 研究生 生活格言:,显示结果,【练习8-2】利用Querystring集合读取HTTP查询字符串中的参数,编写实现例8-8中数据交换的ASP程序。程序名为:lx8_2.asp,代码如下:交互数据的表单 培训班通讯录 then Response.write xm&的联系方式是:Response.write 电话:&Request.Querystring(tele)&Response.write 住址:&Request.Querystring(add)&Response.Write 返回 Response.end end if%,赵一 钱二 张三 李四 王五 孙六,显示结果,【练习8-3】一个古老的游戏:石头、剪子、布。如图8-15所示,游戏者用鼠标单击选择石头、剪子或布,计算机则随机选择,进行比赛。程序lx8_3.asp的代码如下:%player=request(choice)if player=1 or player=2 or player=3 then select case player case 1 mychoice=石头 case 2 mychoice=剪子 case 3 mychoice=布 end select randomize Computer=int(rnd*3)+1,select case Computer case 1 choice=石头 case 2 choice=剪子 case 3 choice=布 end select if player-Computer=0 then pp=平手!elseif player-Computer=-1 or player-Computer=2 then pp=恭喜你,你赢了!else pp=这次电脑赢了!end ifend if%石头、剪子、布小游戏,玩家电脑 请选择:石头 剪子 布 f1.submit 说明:可以使用浏览器端的.htm程序来实现上述功能,参见第6课。,显示结果,