第8课___Request对象及其使用_第1页
第8课___Request对象及其使用_第2页
第8课___Request对象及其使用_第3页
第8课___Request对象及其使用_第4页
第8课___Request对象及其使用_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8.1 课前导读 8.2 课堂教学 8.3 上机练习 8.4 课后作业,第8课 Request对象及其使用,8.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对象获取输入信息的能力。,8.2 课堂教学 8.2.1 Request对象概述 8.2.2 ASP与表单的交互 8.2.3 使用Form集合 8.2.4 使用Querystring集合 8.2.5 使用Cookies集合 8.2.6 使用ClientCertificate集合,8.2.1 Request对象概述 1. Request对象的集合 2. Request对象的属性 3. Request对象的方法 4. Request对象的使用,8.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的顺序搜索所有集合,当发现一个匹配的变量时,就认定它是要引用的成员。当然,编程实践中,为避免不同集合中同名变量引用的二义性,最好显式地指定集合。,8.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 %,请输入 姓名: 性别:男 女 ,8.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才行,否则将无法读取参数。,8.2.4 使用Querystring集合 Querystring集合是Request对象中最常用的另外一个集合,与Form集合不同,Querystring集合读取参数时,HTML表单的Method应设置成Get。 除了读取表单对象传递的参数之外,Querystring集合还可以通过读取HTTP查询字符串中的参数值来传递参数。使用Querystring集合的语法格式如下: Request.Querystring(变量)(index)|.Count 其中,“变量”为在HTTP查询字符串中指定要检索的变量名称;Index用于检索变量多个值中的某一个,当然此变量有多个值时此项才有意义;Count用于指定Querystring中某变量值的个数。,8.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查询字符串中的变量值。 当表单的Method属性为Get时,表单中的数据被保存在Querystring集合中,当表单的Method属性为Post时,Querystring取回标识在URL后面的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的变量 的通讯录是 电话: 住址: 三种方法所得到的结果是相同的。,8.2.5 使用Cookies集合 Cookies集合是Response对象和Request对象共有的一项经常用到的集合。 用户在通过HTTP协议访问一个主页时,每次连接时都要重新开始。因此,如果要判别某个用户是否曾经进入本网站,那么只能使用Cookies了。当用户第一次访问网站时,可以利用Response对象的Cookies集合将数据存储到客户端计算机,当用户再次访问此网站时,则可利用Request对象的Cookies集合取得相关信息。,8.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能为站点和用户所带来的好处实在太多,首先它可以让Web站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径;其次它可以告诉在线广告商广告被点击的次数;再者它可让用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点;另外还可以帮助站点统计用户资料以实现个性化服务。 Cookies是通过HTTP Headers从服务器端返回到浏览器上。首先,服务器端在响应中利用Set-Cookies Headers来创建一个Cookies,然后,浏览器在它的请求中通过Cookie Headers包含这个已创建的Cookies,并把它返回服务器,从而完成浏览器的认证。,2. Cookies的特点 在HTTP协议下,Cookies仅仅是一个文本文件,是服务器在浏览器端写入的小文件。 Cookies存放在浏览器端的本机磁盘上,而不是存放在服务器端。通常,Cookies包含用户的有关信息(如身份识别号码、密码、用户在Web站点上购物的方式或用户访问该站点的次数等)。无论何时用户连接到服务器,Web站点都可以访问Cookies信息。,使用Cookies的好处有下列几点: 可以自由决定Cookies的生命周期,需要的话,甚至可以将Cookie的生命周期设置成数周、数月或数年,不必担心cookies会因自动消失而失去某些信息。 由于cookies是存放在浏览器端的本机磁盘上,故不会占用服务器端的磁盘空间。 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将自动从浏览器端的本机磁盘上删除。 Reponse对象的Cookies集合用于写入Cookies,而Request对象的Cookies集合则可以读出Cookies并向服务器端传递。,(1) 不带Key的Cookies的创建和读取 对于不带Key的Cookies的创建,只要指定Cookies的参数和其相应的值即可。 【例8-9】创建两个cookies:myBox和mySphere。如下列程序所示: Cookies示例 ,代码以8-9.asp存盘,并运行即创建了Cookies。创建好Cookies以后,可以通过如下的语句读取相应的值: Response.Cookies(cookies名) 其中,cookie名是已创建的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子目录中。 运行修改后的程序8-10.asp,就可以在客户端的本机磁盘中找到Cookies文件,如图8-10所示。,(2) 带Key的Cookies的创建和读取 一个Cookie可以有多个值(这有点像数组),这样的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值。 如果一个存在的Cookie并没有一个Key值,但是Response.Cookies指定了Key的名称和值,则这个存在的Cookie将被删除,并创建新的Key名和值。同样,如果一个存在的Cookie有Key值,但是Response.Cookies没有指定Key名,则这个存在的Key值将被删除。例如,先运行了例8-9后,又运行例8-11,则得到的Cookie文件如图8-12所示。,8.2.6 使用ClientCertificate集合 当客户端通过ASP访问服务器的一个页面或其它资源时,可以通过Client Certificate集合向服务器表明身份,而身份的表明则通过“关键字”和“关键字子字段”两部分参数来实现。具体参数如表8-2、表8-3所示。,表8-2 Client Certificate集合关键字,表8-3 Client Certificate集合关键字,通过Clientcertificate集合,可以让不同的用户打开不同的网页。例如对于A、B、C三个不同的用户打开不同的页面。 ,8.3 上机练习 在Web网页中,表单是必不可少的元素,它对于Web页面交互功能的实现起非常的作用。 【练习8-1】使用表单和Form集合的技术,编写实现例8-3中数据交换的ASP程序,显示结果。,图8-13 数据交换的ASP程序,程序名为:lx8_1.asp,代码如下: “ then Response.write “欢迎登录本站点!“ Response.write “您的姓名是:“ & Request.Form(“xm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论