第四章用户登录模块设计第一次课4.1对象知识简介有人可能对“对象”一词有点生疏,可以这样理解,所谓对象,就是把一些功能都给你封装好了,至于它内部具体是怎么工作的,不要管它,只要会使用它就行了。对象一般有方法、属性和事件。举一个简单的例子:一辆汽车就是一个对象,那么汽车的颜色就是它的一个属性;汽车可以运送客户或货物,这就是它的一个方法;如果汽车不幸发生碰撞,就会损坏,这是事件。关于对象更复杂的理论请参考专门书籍。ASP包含了五大内置对象,包括:Request、Response、Session、Application、Server,简要说明如表下表所示ASP内部对象简要说明对象功能Response将数据信息输送给客户端Request从客户端获取信息Server提供许多服务器端的应用函数Application存储一个应用程序中所有用户共享的信息Session存储单个客户的信息每个对象提供了一些函数和属性,可以通过调用这些函数和属性实现页面编程。4.2、Response对象Response对象用于动态响应客户端请求(Request),并将动态生成的响应结果返回到客户端浏览器中,使用Response对象可以直接发送信息给浏览器、重定向浏览器到另一个URL或设置Cookie的值等。Response对象在ASP编程中非常广泛,也是一种非常好用的工具。一、Response对象语法简介语法格式:Response[.集合|属性|方法].(变量)1、集合Response对象只有一个集合----Cookies,该集合用于设置Cookie的值,在后面的章节中将会介绍。2、属性Response对象的属性如下表所示Response对象的属性属性功能说明Buffer标明输出内容是否被缓冲CacheControl设置代理服务器是否将输出内容放进缓冲区CharSet将字符集的名称附加到内容类型(Content-Type)标头ContentType设置服务器输出的HTTP内容类型Expires设置放进浏览器缓冲区的网页逾期时间的长短(以分为单位)ExpiresAbsolute设置放进浏览器缓冲区的网页逾期日期与时间IsClientConnected标明客户端是否仍与服务器端相连接Status服务器的状态值下面将介绍几个常用属性的使用方法Buffer属性Buffer属性用于设置是否有缓冲页输出,其取值有两个:True或False。一般格式为:Response.Buffer[=Flog]Flog用于指定页面输出时是否要用缓冲,若为True则为缓冲,若为False则不使用缓冲页,IIS4.0和Pws4.0,默认值为False,Iss5.0,默认值为True。当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了Flush或End方法后,服务器才将响应发送给客户端浏览器;反之,数据在当前页的所有服务器脚本处理的同时将数据发送给客户端浏览器。注意:服务器将输出发送给客户端浏览器后就不能再设置Buffer属性,因此应该在.ASP文件的第一行调用该属性。对于一个页面来说,处理起来如果需要花很长时间,则使用缓冲和不使用缓冲就有明显的区别,若处理的时间很短,则不明显。实例:%@LANGUAGE=VBSCRIPTCODEPAGE=936%%response.buffer=false%htmlheadtitleBuffer实例/title/headbody%fori=asc(a)toasc(z)response.Writechr(i)&brnext%/body/html该程序是在屏幕上输出显示字符“a”到“z”,每输出一个字符就换一行。每一句命令执行后结果都会立即显示。如果添加一条指令设置Buffer属性为True,那么服务器端的Response要写入缓存区中,当脚本被处理完毕后再释放给用户,也就是说,这个页面在执行时,整个页面的内容会同时显示在浏览器上。ContentTypeContentType属性指定服务器响应的HTTP内容类型。如果未指定ContentType,默认为text/html,表示浏览器将代码解释为普通的html页面并显示给用户。常用的类型:text/plain、image/gif、image/jpeg、Application/msword、Application/msexcel等。如可以这样写%response.contentType=”image/gif”%,表示要输出gif图片。Expires该属性指定了在浏览器上缓冲存储的页面距过期还有多长时间(以分钟为单位)。如果用户在某个页面过期之前又回到此页,就会显示缓冲区中的页面。案例:制定在浏览器上缓冲存储的页面距过期还有1天%response.expires=1440%如果该属性值设置为0,则可使缓存的页面立即过期。这是一个比较实用的属性,当客户通过ASP的登录页面进入WEB站点后,应该利用该属性是登录页面立即过期,以确保安全。ExpiresAbsolute属性该属性是指定缓存于浏览器中的页面到期的日期和时间。Date是指定页面的到期日期,Time是指定页面的到期时间。一般格式为:ExpiresAbsolute[=[Date][Time]]通常在实际运用中,该属性可以设置网页的精确有效时间。比如在“网上投票”活动中,就需要对投票页面设定精确的过期时间,表明投票结束。Status属性Status属性是指定服务器返回的状态行的值,可以用来处理服务器返回的错误。在调试过程和向客户端返回有关错误信息时,Status属性特别重要。一般格式为:Response.Status=”状态描述字符串”其中状态描述字符串为Web服务器要响应的状态行的值。例如:Response.Status=”404找不到文件。”常见状态码(状态行值)及其含义状态码含义200表示主页请求被完全成功接受301表示该页面已经转移到了其他地址,这时浏览器会自动转向新的地址404表示浏览器请求的页面是不存在的503表示当前服务器端遇到了无法应付的错误3、Response对象的方法Response对象的方法如下表所示Response对象的方法方法功能说明Write输出数据到客户端浏览器Redirect重新定向浏览器的URL地址End结束向浏览器的数据输出Clear清除输出缓冲器中的数据Flush将缓冲器中已有的数据输出AddHeader将自定义的标头(Header)信息加入到输出的网页AppendToLog将指定的数据添加到服务器的日志记录中BinaryWrite将指定的数据写入到当前HTTP输出中,不进行任何字符转换下面介绍几个常用的方法:Write方法该方法是将指定的字符串输出到客户端Redirect该方法使浏览器立即重定向到程序指定的URLEnd方法End方法是终止当前ASP页面的执行,使用该方法后的所有数据将不被解释,服务器将直接断开与客户端的数据传输,或者处理该页面以外的程序。如果Response对象的Buffer属性为True,这时End方法立即把缓存中的内容发送到客户并清除缓存区。所以要取消所有向客户端的输出,可以先清除缓存区,然后再利用End方法。通常当用户在上网的时候,要强行进入管理员页面时,系统就会提示没有访问权限,这就是利用End方法实现的。一般格式为:Response.EndClear方法Clear方法是清除缓存区中的所有HTML输出。当Response对象的Buffer属性被设置为True时,则在使用Clear方法后,在服务器的缓存区将被设置为空,所有数据会丢失。但如果没有将Response.Buffer设置为True,则该方法将导致运行时错误。一般格式为:Response.ClearFlush该方法立即发送缓冲区中的输出。如果没有将Response.Buffer设置为True,则该方法将导致运行时错误。二、应用1、response.write方法Response对象的write方法可以向发往客户端浏览器的HTML文件中直接输出信息,也就是可以将信息从服务器输出到浏览器,这样该信息就能够显示在浏览器画面上。语法格式:Response.writeVariant其中:Variant是要输出的数据,该数据可以是字符、字符串、整数等,也可以包含任何有效的Html标记将字符、字符串、整数等输出到浏览器例如:将“Response对象的Write方法的应用实例”输出到浏览器有三种方法:(1)%Response.Write“Response对象的Write方法的应用实例”%或者%Response.Write(“Response对象的Write方法的应用实例”)%(2)data=“Response对象的Write方法的应用实例”%Response.Writedata%(3)data=“Response对象的Write方法的应用实例”%=data%注意:(1)、方法1使用字符串常量作为参数,但在编写脚本时,由于静态字符串常量的长度不能大于1022个字节,所以,若要使用Write方法来输出长度超过1022个字符的内容,则不能使用字符串常量作为参数,而应当使用其他形式(变量)来饮用该内容,如方法2。(2)、如果%和%之间只有一行Response.Write语句时,在编写时,Response.Write可以用“=”来代替,如方法3。输出的数据可以混合使用HTML标记例如:将“Response对象的Write方法的应用实例”以加粗、斜体形式输出到浏览器。三种方法:(1)%Response.Write“biResponse对象的Write方法的应用实例/i/b”%或者%Response.Write(“biResponse对象的Write方法的应用实例/i/b”)%(2)data=“biResponse对象的Write方法的应用实例/i/b”%Response.Writedata%(3)data=“biResponse对象的Write方法的应用实例/i/b”%=data%注意:输入的数据中包含双引号“”,则必须将该双引号改写为两个双引号或者一个单引号。例如:将“Response对象的Write方法的应用实例”输出到浏览器方法:%Response.Write“Response对象的Write方法的应用实例”%若要在浏览器上以红色文字显示“Response对象的Write方法的应用实例”方法:%Response.Writefontcolor='red'Response对象的Write方法的应用实例/font%输出的数据中包含字符%,则必须写为:%\例如:在浏览器上显示一条高度为2,颜色为绿色,宽度为浏览器窗口宽度70%的水平线:方法:%response.writehrsize='2'color='green'width=70%\%若要在浏览器上显示类似hrsize='2'color='green'width=70%\的字符串,但不希望浏览器解释为html代码,则必须使用server对象的HTMLEncode方法将字符串编码。方法:%response.write(server.htmlencode(hrsize='2'color='green'width=70%\))%综合案例1、使用response.write方法向客户端浏览器输出一个完整的HTML文件。%@language=VBScript%%response.writehtmlresponse.writeheadresponse.writetitlewrite方法应用案例/titleresponse.write/headresponse.writebodyresponse.writedivalign=centerresponse.write