资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,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.1Request对,象,象概述,8.2.2ASP,与,与表单的交,互,互,8.2.3,使,使用Form集合,8.2.4,使,使用Querystring,集,集合,8.2.5,使,使用Cookies集合,8.2.6,使,使用ClientCertificate集合,8.2.1Request对,象,象概述,1. Request,对,对象的集合,2. Request,对,对象的属性,3. Request,对,对象的方法,4. Request,对,对象的使用,8.2.1Request对,象,象概述,Request 对象,是,是负责从客,户,户端浏览器,获,获取用户信,息,息的对象。,它,它是ASP,中,中重要的服,务,务器内置对,象,象,它连接,着,着Web服,务,务器和Web客户端程,序,序。利用Request对象可以,接,接收基于HTTP请求,的,的所有用户,信,信息,如用Post方,法,法或Get,方,方法传送来,的,的参数以及Cookie和Server Variable等等。,1. Request,对,对象的集合,Request对象提,供,供了5个集,合,合,可以用,来,来获取客户,端,端对Web,服,服务器请求,的,的各类信息,,,,其说明见,表,表8-1。,表8-1Request对象,的,的集合及说,明,明,集合名称,说明,ClientCertificate,当客户端访问一个页面或其他资源时,用来向服务器表明身份的客户证书的所有字段或条目的数值集合,每个成员均是只读,Cookies,根据用户的请求,用户系统发出的所有cookie的值的集合,这些Cookie仅对相应的域有效,每个成员均为只读,Form,METHOD的属性值为POST时,所有作为请求提交的段中的HTML控件单元的值的集合,每个成员均为只读,QueryString,依附于用户请求的URL后面的名称数值对或者作为请求提交的且METHOD属性值为GET(或者省略其属性)的,或中所有HTML控件单元的值,每个成员均为只读,ServerVariables,随同客户端请求发出的HTTP报头值,以及Web服务器的几种环境变量的值的集合,每个成员均为只读,在这些集合,之,之中,最常,使,使用的是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.2ASP,与,与表单的交,互,互,在动态网页,设,设计中,表,单,单是必不可,少,少的元素,,许,许多功能的,实,实现都与表,单,单密不可分,。,。表单的主,要,要功能是接,受,受用户填写,在,在表单中的,文,文字、选择,项,项等内容,,在,在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与表单的,交,交互,请输,入,入,姓名:,性别,:,:男,女,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,集,集合示例,欢,迎,迎您登录,本,本站点,这些,信,信息对吗?,如不,对,对,返回,2. 读,取,取Form集合中,所,所有元素,对,对象的值,上面介绍,了,了如何传,递,递Form集合中,特,特定元素,对,对象的值,,,,下面介,绍,绍如何读,取,取Form集合中,所,所有元素,对,对象的值,。,。,【例8-4】在例8-3中,使,使用循环,语,语句读取Form,集,集合中所,有,有元素对,象,象的值。,有两种循,环,环语句可,以,以读取Form集,合,合中所有,元,元素对象,的,的值。, 使用,“,“Foreach In”循环,语,语句,将,文,文件8_3.asp的代码,改,改为:,用For each In语句,读,读取Form集合,示,示例,用For each,In语,句,句读取Form集,合,合示例,欢,迎,迎您登录,本,本站点,这些,信,信息对吗?,如不,对,对,返回, 使用,“,“For,next”循环,语,语句,将,文,文件8_3.asp的代码,改,改为:,用Fornext语句,读,读取Form集合,示,示例,Fornext语句,读,读取Form集合,示,示例,欢,迎,迎您登录,本,本站点,这些,信,信息对吗?,如不,对,对,返回,这种方法,不,不能得到,对,对象的名,称,称,显示结果如图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,集,集合的某,元,元素对象,的,的全部参,数,数值,欢,迎,迎您登录,本,本站点,这些,信,信息对吗?,如不,对,对,返回,程序运行,结,结果。,说明:在,利,利用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,集,集合示,例,例,欢,欢迎您,登,登录本,站,站点,这,这些信,息,息对吗?,如,如不对,返回,运行结,果,果,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是通过HTTPHeaders从服务,器,器端返回到,浏,浏览器上。,首,首先,服务,器,器端在响应,中,中利用Set-CookiesHeaders来创建,一,一个Cookies,,然,然后,浏览,器,器在它的请,求,求中通过CookieHeaders包含,这,这个已创建,的,的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-3Cookies属性,及,及其说明,属性名称,说明,Domain,指定只有某个Domain(网域)可以存取该cookie,只写属性,Expires,cookie的过期日期。为了在会话结束后将cookie存储在客户端磁盘上,必须设置该日期。若此项属性的设置未超过当前日期,则在任务结束后cookie将到期,只写属性,HasKeys,指定cookie是否包含关键字Key,只读属性,Path,指定只有特定路径可以存取该cookie,默认为应用程序的路径,只写属性,Secure,用于设定Cookie是否在一个安全的渠道传递。当一个安全渠道没有在HTTP首页被发现,Cookie信息将不发送,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,如果只是在,当,当前的网页,里,里使用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,程序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访问服,务,务器的一,个,个页面或,其,其它资源,时,时,可以,通,通过ClientCertificate,集,集合向服,务,务器表明,身,身份,而,身,身份的表,明,明则通过,“,“关键字,”,”和“关,键,键字子字,段,段”两部,分,分参数来,实,实现。具,体,体参数如,表,表8-2,、,、表8-3所示。,关键字,参数说明,Certificate,以ASN.1格式返回所有服务器端身份权限的二进制信息,Flags,提供其它额外的服务器身份权限的标签,包括ceCertPresent与ceUnrecognizedIssuer等,其常数值分别为1、2。前者表示服务器端已经提出权限信息,而后者表示服务器端最近一次的权限为未知的发行者。,Issuer,以字符串的类型返回发行者身份权限的子字段信息,当子字段的数据超过一个则以“,”将其分隔,例如:C=US,OU=SoftwareDevelop等,SerialNumber,将四组十六进位序号以ASCII格式返回,其中以“,”作为分隔符号,例如:FF-00-CC,Subject,以字符串的类型返回服务器端身份权限的子字段信息,当子字段的数据超过一个,则以“,”将其分隔,例如:C=US,OU=SoftwareDevelop等,ValidForm,返回身份权限的起始时间,ValidUntil,返回身份权限的结束时间,表8-2ClientCertificate,集,集合关键,字,字,表8-3ClientCertificate,集,集合关键,字,字,子字段,说明,子字段,说明,C,表示国家的名称,O,表示公司或组织的名称,CN,表示客户端的名称,OU,表示公司或组织中的部门名称,GN,表示客户端的用户名称(不包含姓),S,表示州或省的名称,I,表示客户的用户的姓氏,T,表示用户的职称,L,表示客户端的位置,L,表示客户端的位置,8.3,上,上机练,习,习,在Web,网,网页中,,表,表单是必,不,不可少的,元,元素,它,对,对于Web页面交,互,互功能的,实,实现起非,常,常的作用,。,。,【练习8-1】使,用,用表单和Form,集,集合的技,术,术,编写,实,实现例8-3中数,据,据交换的ASP程,序,序,显示结果。,图8-13 数,据,据交换的ASP程,序,序,程序名为,:,:lx8_1.asp,代,码,码如下:,%,xm=Request.Form(xm),if xm 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,您,您,的
展开阅读全文