490 likes | 767 Views
ASP 内置对象. 内容提要. 本章主要介绍 ASP 内置的五大常用对象、一个集合和一个文件。 五大对象分别是: Response , Request , Application , Session 和 Server , 一个集合是 Cookie , 一个文件是 global.asa 。 并介绍如何实现网站常用的程序。. 内置对象概述. 为了实现网站的常见功能, ASP 提供了内置对象,内置对象的特点是:不需要先创建一个实例,可以直接使用。常用的内置对象及其功能如下。 ( 1 ) Response 对象:将信息发送回给浏览器。
E N D
内容提要 • 本章主要介绍ASP内置的五大常用对象、一个集合和一个文件。 • 五大对象分别是:Response,Request,Application,Session和Server,一个集合是Cookie,一个文件是global.asa。 • 并介绍如何实现网站常用的程序。
内置对象概述 • 为了实现网站的常见功能,ASP提供了内置对象,内置对象的特点是:不需要先创建一个实例,可以直接使用。常用的内置对象及其功能如下。 • (1)Response对象:将信息发送回给浏览器。 • (2)Request对象:获取客户端的信息。 • (3)Application对象:存储一个应用中所有用户共享的信息。 • (4)Session对象:存储一个普通用户其滞留期间的用户信息。 • (5)Server对象:提供许多服务器端的应用函数。 • 每个对象提供了一些函数和属性,可以通过调用这些函数和属性实现页面编程。
方法 说明 用法 Write() 向客户端输出数据 Response.Write("你好!") Redirect() 转义到其他URL地址 Response.Redirect("www.sohu.com") BinaryWrite() 输出二进制数据 Resposne.BinaryWrite(二进制数据) Clear() 清楚缓冲区所有信息。前提是Response.Buffer设为True Response.Clear() End() 终止输出 Response.End() Flush() 将缓冲区信息输出。前提是Response.Buffer设置为True Response.Flush() Response对象
属性 说明 用法 Buffer 设置是否使用缓冲区 Response.Buffer = True或者False ContentType 设置输出内容的类型 比如:GIF文件类型为"image/gif" BMP文件类型为"image/bmp" JPG文件类型为"image/jpeg" zip文件类型为"application/x-zip-compressed" Word文件类型为application/msword" 文本文件类型为"text/plain" HTML文件类型为"text/html" Response对象的属性
输出数据 • Response.Write()的功能是向浏览器输出信息,与VBScript中的document.write()的功能相近。 • 但是必须了解其区别:Response是ASP的对象,输出的方式是从服务器端向客户端的浏览器输出。如程序4-01.asp所示。
理解服务器端执行 • 所有<%…%>内的代码都被IIS解释执行,IIS解释执行后把程序的结果发送给浏览器。<Script>内的代码都是由浏览器解释执行的,如程序4-02.asp所示。 • 程序的两段代码基本一样,都是取时间,但是<%…%>内的代码是ASP程序,取的是服务器端时间
简写形式 • 可以看出<%…%>内的程序只有结果,而<Script>标记可以看到程序。因为<%…%>内的程序是由服务器IIS执行的,而<Script>中的程序是客户端浏览器解释执行的。 • Response.Write使用非常频繁,可将它简化为“=”。如程序4-03.asp所示。
网页转向 • 访问一个ASP页面,有时并不是出现需要的网页,而是转到另外一个页面上去了。Response中有一个Redirect方法的功能是实现转向 • 如程序4-05.asp所示。
停止输出 • 在程序的执行过程中,如果遇到了Response.End()语句,下面所有的输出将不再被执行,如程序4-06.asp所示 • 当执行“Response.End()”语句以后,所有输出将停止。
使用缓冲区 • Response对象的Buffer属性用来设置是否将页面先输出到缓冲区。它的取值为True或者False,在Windows NT的服务器环境下,默认值是False。 • Windows 2000/2003服务器环境下,默认值是True • 如果设置值是True表示先输出到缓冲区,然后再从缓冲区输出到客户端浏览器,这样有利于加快执行的速度。如果设置值是False表示直接将信息输出到客户端的浏览器。语法是: • Response.Buffer=True或者False
Request对象 • Request对象主要的功能是从客户端得到数据,常用的三种取得数据的方法是:Request.Form(),Request.QueryString()和直接使用Request(),Request是前两种方法的缩写。 • 前两种方法主要对应的是Form提交时的两种不同提交方法:Post方法和Get方法。
方法 说明 用法 Form(名称) 获取Post方式提交的数据 Request.Form(数据名称) QueryString(名称) 获取Get方式提交的数据 Request.QueryString(数据名称) ServerVariables(名称) 获取服务器的相关信息 ServerVariables(选项名称) BinaryRead(大小) 获取Post方式提交的数据 BinaryRead(100) Request对象的方法
获得表单数据 • 准备一个HTML表单,提供两个输入框,一个输入用户名,一个输入密码。如程序4-07.htm所示。 • Form表单Action属性是文件4-08.asp,意思是当用户提交时,用4-08.asp来处理提交的数据。METHOD属性说明提交的方式,这里设置为Post方式,需要使用Request.Form来读取。如程序4-08.asp所示。
提交方式 读取方式 Method = Post Request.Form() Method = Get Request.QueryString() 数据和读取数据的对应关系
案例4-1 调查表 • 该案例实现的是一个含有多种Form元素的输入表单,利用Request对象读取到服务器端,再用Response对象输出到浏览器上。输入程序如input.htm所示。 • 利用Request对象可以将所有数据都读出来,注意和输入表单元素的Name属性相同。如程序handle.asp所示。
获得服务器信息 • 通过Request对象的ServerVariables方法得到一些服务器端的信息,比如当前ASP的文件名、客户端的IP地址等。如程序4-12.asp所示。 • 利用该程序可以将所有链接过本网站用户的IP地址记录下来
获得响应的总数据大小 • 利用属性TotalBytes可以得到客户端响应数据字节的大小。基本语法是: • Request.TotalBytes
获取二进制数据 • 可以利用二进制方式取得获取客户端用Post方式提交的数据,语法是: • Request.BinaryRead(字节大小) • 一般BinaryRead方法和TotalBytes属性结合,用来读取提交的所有二进制数据。
Application对象 • Application对象是一个比较重要的对象,对Application对象的理解关键是:网站所有的用户公用一个对象,当网站服务器开启的时候,Application就被创建。 • 利用Application这一特性,可以方便地创建聊天室和网站计数器等常用站点应用程序。
Application • Application提供两个方法: • (1)Lock()——锁定Application对象,防止被其他用户访问。 • (2)Unlock()——解除锁定,可以接受用户的访问。 • Application提供两个事件: • (1)Application_OnStart()——Application开始创建的时候,调用该事件。 • (2)Application_OnEnd()——Application被清除的时候,调用该事件。
自定义属性 • Application对象没有自己的属性,用户可以根据自己的需要定义属性,来保存一些信息,其基本语法是:Application(“自定义属性名”),如程序4-13.asp所示。 • 执行完以后,该对象就被保存在服务器上。执行程序4-13.asp时依然可以输出原先保存的值。
实现聊天室 • 聊天室允许多用户实时进行信息交流,所有用户可以看到彼此的信息,这与Application对象的特点正好符合,所以可以利用Application方便地实现聊天室。 • 如程序4-15.asp所示。
网页计数器 • 网页计数器是Application 对象的又一个用途,因为Application是所有的用户所共有的,所以可以存储计数器的值 • 当有新用户访问网页时自动增加计数器的值。如程序CountV1.asp所示。
计数器 • 以上程序只有两条ASP语句,但是已经可以实现计数了。 • 这个计数器还不完善,下面分成几个版本来完善它 • 在版本二中加入Application的锁定语句。如程序CountV2.asp所示。
计数器 • 一般网站的计数器都是图形界面,这个计数器也可以变成具有图形界面的计数器。如程序CountV3.asp所示。 • 首先取出Application(“Counter”)的值,然后赋值给变量S,再执行循环语句,Len(S)功能是取字符串的长度,Mid(S, i, 1)的意思是从字符串S的第i个位置开始取1个字符。执行完后就将原先的字符数字转化成以图形显示的图形计数器。 • 本程序执行需要有0~9的十个Gif图片
Session对象 • Session指的是访问者从到达某个特定主页到离开为止的那段时间网站为用户分配的用来保存用户信息的对象。可以使用Session 对象存储用户登录网站时候的信息。当用户在页面之间跳转时,存储在Session对象中的变量不会被清除。 • Session对象是针对每个用户的,不同用户的信息用不同的Session来保存。在一个应用程序中,当客户端启用一个Session的时候,ASP会自动产生一个SessionID,并把这个SessionID送给客户端浏览器。
Session对象 • Session对象的属性有两个: • (1)SessionID——存储用户的SessionID信息 • (2)Timeout——Session的有效期 • Session对象提供的方法只有一个: • Abandon()——清除Session对象。 • Session对象提供两个事件: • (1)Session_OnStart()——Session对象开始创建的时候,自动调用该事件。 • (2)Session_OnEnd()——Session对象清除时,自动调用该事件。
对Session的理解 • 当用户登录网站的时候,系统会自动分配给用户一个Session。 • 可以使用SessionID属性得到该Session的ID,如程序4-16.asp所示。
自定义属性 • Session对象的主要用途也是保存信息,当用户第一次到达网站时,系统为其分配一个Session。 • Session和Application一样也使用自己的自定义属性,如程序4-17.asp所示。
Timeout属性 • 一个Session对象被创建以后,如果用户停止活动(比如:浏览网页)一段时间,该对象将被自动清除。也就是说:Session对象有其生存期,默认的时间为20分钟。 • 如果希望修改Session的生存期,可以有两种方法:(1)修改IIS中系统的设置值;(2)利用Session对象的Timeout属性来修改。比如将生存期修改为60分钟,使用的语法是: • Session.Timeout = 60
Abandon方法 • 如果想利用程序清除Session对象,可以调用Session的Abandon方法。语法是: • Session.Abandon()
Server 对象 • 利用Server对象可以方便地访问服务器上的方法和属性 • 最常用的是利用Server.CreateObject创建组件的实例。
属性 说明 用法 ScriptTimeout 设置脚本最长执行时间,默认为90秒。 Server.ScriptTimeout = 300 设置脚本执行时间为300秒 Sever对象常用的属性
属性 说明 用法 CreateObject() 创建已经注册的组件 Server.CreateObject("ADODB.Connection") HTMLEncode() 将字符串转换成HTML格式 Server.HTMLEncode("<P>你好</P>") URLEncode() 将字符串转换成URL编码 Server.URLEncode("abc/abc") MapPath() 转换为服务器上的物理路径 Server.MapPath("file1.txt") Execute() 执行新的页面 Server.Execute("file1.asp") Transfer() 转移到新的网页 Server.Transfer("file1.asp") Server对象的方法
输出HTML代码 • 通常情况下,浏览器将“<”和“>”中间的符号作为HTML标记,不会显示在浏览器上,如果想在浏览器上显示时,可以使用Server对象的HTMLEncode方法 • 如程序4-19.asp所示。
获取物理路径 • Server.MapPath的功能是把“网络路径”转换为服务器上的物理路径。 • 如程序4-20.asp所示。
Execute方法 • 该方法用来执行新的网页,执行完毕后返回原来页面。语句为: • Server.Execute(asp文件名) • 使用方法如程序4-21.asp所示。
Transfer方法 • 该方法和Execute方法非常相似,唯一的区别是执行完新的网页后,并不返回原来的页面。语法为: • Server.Transer(ASP文件名)
Cookie集合 • Cookie和Session一样都可以保存用户信息 • 区别是Cookie将信息保存在客户端,而Session将信息保存在服务器。
写入Cookie • 可以将Cookie写到浏览器中,让浏览器来保存Cookies的值。 • 如程序4-22.asp所示。
读取Cookie • 程序4-22.asp是将Cookie写入浏览器,也就是将Cookie保存起来,程序4-23.asp将Cookie读出来,并且显示到浏览器上。 • Cookie必须设置有效期,否则为临时会话Cookies,关闭浏览器后就失效了。 • Response.Cookies("Number") = varNumber '将新的访问次数存到Cookies中 • Response.Cookies("Number").Expires=#2030-1-1# '设置有效期
global.asa文件 • Application的两个事件(Application_OnsStart()和Application_OnEnd())和Session的两个事件(Session_OnStart()和Session_OnEnd())都放在global.asa文件中。 • global.asa文件必须位于网站的根目录才能起作用。global.asa文件有如下结构。
例4-3 实现动态在线人数统计 • 当网站被第一个人访问时就会自动调用Global.asa 文件 • 但是需要注意的是:global.asa文件必须放在网站的根目录下。程序CountOnLine.asp文件只用了一条语句实现在线人数统计。
案例4-4 聊天室研究 • 利用Application和Session可以做出比较专业的聊天室。这个聊天室对简单聊天室进行了功能上的扩充,由以下5个文件组成。 • (1)index.asp:聊天室的登录界面。 • (2)do_login.asp:登录处理界面。 • (3)chatpage.htm:聊天室的框架文件。 • (4)message.asp:聊天室的信息输入界面。 • (5)display.asp:聊天信息显示页面。
小结 • 本章重点理解五大对象、一个集合和一个文件的概念和使用方法。理解Response对象提供的Write()方法、Redirect()方法和End()方法。如何利用Request获得Form表单中的信息,如何获得超级链接传递的变量。 • 理解Application对象,如何利用Application对象实现聊天室和计数器。理解Session对象及其自定义属性。掌握使用Server对象获取网站的物理路径,如何向浏览器写入Cookie和如何将Cookie读取出来。理解global.asa文件的特点和功能。
一、选择题 • 1. 对于下面的语句,执行的结果是___________。 • <% • Response.Write("中国") • Response.End() • Response.Write("你好") • %> • A) 中国你好B) 中国 • C) 你好D) 出错 • 2. Request.Form读取的数据是___________。 • A) 以Post方式发送的数据B) 以Get方式发送的数据 • C) 超级连接后面的数据D) 以上都不对 • 3. Session对象默认有效期为___________分钟。 • A) 10 B) 20 C) 30 D) 60 • 4. Application对象的默认的有效期是___________。 • A) 10 B) 20 C) 30 D) 从网站启动到终止 • 5. Server对象的Execute方法和Transfer方法的区别是___________。 • A) 前者执行完调用网页,继续执行当前页面,后者不是。 • B) 前者执行完调用网页,不再继续执行当前页面,后者不是。 • C) 前者转移到调用的网页,执行新的页面,后者不是。 • D) 前者转移到调用的网页,不在执行当前的页面,后者不是。
二、填空题 • 1. Response.Write()的功能是向浏览器输出信息,与VBScript中的___________的功能相近。 • 2. Request.Form和Request.QueryString对应的是Form提交时的两种不同提交方法:___________方法和___________方法。 • 3. Application提供两个事件:(1)___________——Application开始的时候,调用该事件。(2)___________——Application结束的时候,调用该事件。 • 4. 如果希望修改Session的生存期,可以有两种方法:(1)修改IIS中系统的设置值;(2) ______________________。 • 5. Server.MapPath("/")或者___________获得的是网站的根目录。
三、简答题与程序设计题 • 1. Response对象有什么功能,Response.Wrtie和document.write有什么区别? • 2. Request.Form和Request.QueryString有什么异同点? • 3. 如何获得获得客户端的IP地址? • 4. Application对象有什么特点?和Session对象有什么联系和区别? • 5. 如何利用程序获得某网站的根路径? • 6. 程序如何向浏览器写入Cookie集合,如何从浏览器端读取Cookie集合。 • 7. 改写案例4-3,实现人数统计的图形显示。(上机练习)。 • 8. 改写案例4-4,给聊天室添加发言的颜色选择,发言时可以选择三种颜色(红色Red,蓝色Blue和黑色Black),发言在显示时显示成所选颜色。(上机练习)。