第4章Request和Response对象•利用Request对象从客户端获取信息4.2•使用Cookie在客户端保存信息4.4•本章小结4.5•利用Response对象向客户端输出信息4.3本章内容简介•ASP内部对象概述4.14.1ASP内部对象概述•什么叫对象?•对象的属性、方法和事件•ASP几个重要的内部对象–Request对象—从客户端获取数据–Response对象---向客户端输出数据–Session对象---记载特定客户的信息–Application对象---记载同一个应用程序中的所有用户之间的共享信息–Server对象---提供服务器端的许多应用函数,如创建COM对象和Scripting组件等4.2利用Request对象从客户端获取信息•4.2.1Request对象简介•4.2.2使用Form数据集合获取表单信息•4.2.3使用QueryString获取查询字符串信息•4.2.4使用ServerVariables获取环境变量•4.2.5使用ClientCertificate获取身份验证•4.2.6TotalBytes属性•4.2.7BinaryRead方法4.2.1Request对象简介•Request对象用来获取客户端信息,主要依靠5种数据集合,分别是QueryString、Form、Cookies、ServerVariables、ClientCertificate。•语法为:Request[.数据集合](参数)例如:%strA=Request.Form(txtA)'获取表单元素txtA的值%•Request对象还有两个不太常用的属性TotalBytes和方法BinaryRead4.2.2使用Form数据集合获取表单信息•在ASP中,获取FORM表单中的信息就是用Form获取方法来实现的。•语法:Request.Form(参数)Form数据集合示例1示例1:一个简单的计算器表单的例子Form数据集合示例2示例2:表单和表单处理写在同一个文件中Form数据集合示例3•填写注册信息的例子4.2.3使用QueryString获取字符串信息•可以利用QueryString获取方法取到标识在URL后面的所有变量及其值;–ahref=”4-1.asp?name=白芸&age=22”•为什么要用该获取方法?•语法:–Request.Querystring(“参数”)QueryString方法示例4.2.4使用ServerVariables获取环境变量•利用该方法可以获取服务端或客户端的一些信息,如来访者的IP地址。•语法如下:Request.ServerVariables(variablename)其中variablename表示环境变量名称字符串,常用的环境变量有:–LOCAL_ADDR服务器端IP地址–REMOTE_ADDR客户端IP地址–SCRIPT_NAME正在运行的脚本文件的路径信息ServerVariables方法示例4.2.5使用ClientCertificate获取身份验证•如果客户端浏览器支持SSL(SecureSocketsLayer,安全套接层)协议,并且服务器端要求进行身份验证,则利用ClientCertificate数据集合就可以获取客户端浏览器的身份验证信息。•语法如下:Request.ClientCertificate(keyword)例如:Request.ClientCertificate(Subject)可返回验证主题信息。4.2.6TotalBytes属性•该属性用来获取客户端发出的请求数据的字节大小,语法如下:•Request.TotalBytes•例如:•%intCount=Request.TotalBytes'返回客户端请求数据的字节大小%4.2.7BinaryRead方法•该方法用来以二进制方式获取客户端用POST方法提交的数据。•语法为:Request.BinaryRead(count)–其中count表示准备读取数据的字节大小,取值可以是0至Request.TotalBytes的整数。•比如下面的例子将以二进制方式获取提交的全部数据:–%DimintCount,varDataintCount=Request.TotalBytes'返回提交数据的字节大小varData=Request.BinaryRead(intCount)‘读取指定大小的二进制数据–%4.3Response对象向客户端输出信息•4.3.1Response对象简介•4.3.2使用Write方法输出信息•4.3.3使用Redirect方法实现页面重定向•4.3.4使用End方法停止处理脚本程序•4.3.5Buffer属性、Clear方法、Flush方法•4.3.6BinaryWrite方法•4.3.7关于HTTP响应信息的复杂操作关于Response对象•每当客户端向服务器端发出一个HTTP请求信息,服务器端就会给客户端返回一个HTTP响应信息。在该信息中不仅包含了要输出到页面上的信息,也包括HTTP内容类型、字符集名称等信息。而这些信息都要靠Response对象来输出。•以前已经多次用到Response.write方法了。4.3.1Response对象简介•Response对象用来向客户端输出信息。•Response对象常用的方法有:–1.Write:直接送出信息给客户端。–2.Redirect:引导客户端至另一个URL位置。–3.End:结束程序运行。–4.Flush:立刻输出缓冲区中的页面内容。•常用的属性有下面两个:–1.Buffer:设置为缓冲信息。–2.Expires:页面在缓存中保存的时间。•Response对象的数据集合:Cookies,它负责设置客户端浏览器的Cookie值。使用Write方法输出信息•向客户端输出信息•语法:–Response.Write变量数据或字符串–如:Response.Write您来访的日期是&Date()'输出一个字符串表达式•简略语法:–%=变量数据或字符串%–如:%=业精于勤而荒于嬉%Write方法示例示例:用两种方法输出信息4.3.3Redirect方法实现页面重定向•为什么要使用该方法?•语法为:Response.Redirecturl–其中url表示相对路径、绝对路径或URL字符串.–例如:%Response.Redirect引导至新浪网Response.Redirect“4-1.asp”‘引导至站内其他网页Response.RedirectstrURL'引导至变量表示的网址–%Redirect方法示例示例:根据不同的用户类型引导至相应的页面4.3.4使用End方法停止处理脚本程序•在ASP程序中碰到Response.End语句后,程序立即终止,不过它会将之前的页面内容发送到客户端,只是不再执行后面的语句了。•该方法经常用在调试程序的时候,可以暂时用该语句屏蔽后面的语句,类似于逐条注释掉后面的语句。End方法示例4.3.5Buffer属性和Clear、Flush方法•Buffer属性用来设置服务器端是否将页面先输出到缓冲区,它的值为True或False。•当Buffer为True时,它要把页面输出至缓冲区,当Buffer为False时,服务器端不再将页面输出至缓冲区,会直接将页面输出至客户端浏览器。•当Buffer的值为True时,Clear方法用于将缓冲区中的当前页面内容全部清除,Flush方法用于将缓冲区中的当前页面内容立刻输出到客户端。•想一想为什么要在redirect方法中用Buffer属性?Clear、Flush方法示例•%–Response.Write第一句Response.Flush'立刻输出缓冲区中的内容Response.Write第二句Response.Clear'清除缓冲区中的内容–Response.Write第三句•%•请分析输出结果。4.3.6BinaryWrite方法•该方法用于在不进行任何字符转换的情况下以二进制方式输出信息。•其语法为:–Response.BinaryWrite二进制数据变量•该方法还可以和TotalBytes属性、BinaryRead方法联合起来使用,以二进制方式获取客户端提交的表单信息并以二进制方式输出到页面上。4.3.7关于HTTP响应信息的复杂操作•Response对象还有几个不常用的属性和方法用于控制输出信息方式和添加HTTP响应信息。–(1)缓存网页–CacheControl属性用于设置是否允许缓存,Public表示允许,Private表示不允许。–(2)创建HTTP响应信息的状态行信息–利用Status属性就可以给客户端发送一个状态行信息–(3)添加HTML文档头信息–利用AddHeader方法也可以动态添加有关信息–(4)设置内容类型和字符集–利用Content-Type和Charset属性可以设置输出页面的内容类型和字符集4.4使用Cookie在客户端保存信息•4.4.1Cookie简介•4.4.2使用Response对象设置Cookie•4.4.3使用Request对象获取Cookie•4.4.4Cookie综合示例4.4.1Cookie简介•Cookie俗称甜饼,可以在客户端长期保存信息。它是服务器端发送到客户端的一些文本,保存在客户的硬盘上,一般在Windows文件夹下临时文件夹下的Cookies文件夹里。•每个网站都可以有自己的Cookie,但是每个网站只能读取自己的Cookie。•Cookie有两种形式:会话Cookie和永久Cookie。前者是临时性的,只在浏览器打开时存在;后者则永久地存在于用户的硬盘上并在有效日期之前一直可用。•ASP利用Response对象的Cookies数据集合设置Cookie的值,利用Request对象的Cookies数据集合来获取Cookie的值。4.4.2使用Response对象设置Cookie•可以使用Response对象的Cookies数据集合设置Cookie的值,语法如下:–Response.Cookies(cookiename)[(keyword)|.attribute]=value•Response的Cookies数据集合的主要属性–Expires:设定Cookie的有效日期。如果省略,则关闭浏览器时该Cookie则消失。设置Cookies•(1)设置不含关键字的单值Cookie–设置单值Cookie很简单,只要指定Cookie名称和它的值即可。例如:–%Response.Cookies(strName)=高航%•(2)设置含关键字的多值Cookie–多值Cookie就类似于一个数组,可以包含多个元素,分别用关键字指定即可。例如:–%–Response.Cookies(strUser)(name)=刘晶–Response.Cookies(strUser)(age)=23–%•(3)设置Cookie的有效期–如果不设置Cookie的有效期,则关闭浏览器后该Cookie就消失了/下面就针对上面的例子设置有效期:–%–Response.Cookies(strName).Expires=#2012-1-8#'设置单值Cookie有效期–Response.Cookies(strUser).Expires=#2012-1-8#'设置多值Cookie有效期–%4.4.3使用Request对象获取Cookie•可以利用Request对象的Cookies数据集合获取Cookie的值,语法如下:–Request.Cookies(cookiename)[(keyword)|.attribute]获取Cookie的值•(1)获取单值Cookie的值%strName=Request.Cookies(“strName”)‘返回高航%•(2)获取含关键字多值Cookie的值%strName=Request.Cookies(strUser)(name)'返回刘晶i