1、第第8 8课课 ApplicationApplication对象与对象与SessionSession对象对象ASPASP网页数据库短训教程网页数据库短训教程 (第(第2 2版)版)8.1 课前导读课前导读Application对对象象与与Session对对象象的的关关系系类类似似于于高高级级语语言言中中全全局局变量与局部变量的关系。变量与局部变量的关系。Application对对象象是是服服务务器器硬硬盘盘上上的的一一组组应应用用程程序序,也也就就是是虚虚拟拟目目录录及及其其子子目目录录下下的的一一组组主主页页及及ASP文文件件。Application对对象象的的所所有有数数据据可可以以在在整
2、整个个应应用用程程序序内内部部共共享享,并并且且对对所所有有用用户户都都是是可可见见的的;在在一一个个Application中中创创建建的的变变量量或或对对象象可可以以为为整整个个Application所所用用;Application对对象象包包括括任任何何类类型型,甚甚至至可可以以是是队列。队列。Session对对象象存存储储特特定定用用户户的的信信息息。不不同同用用户户的的Session不不同同,用户之间不能共享用户之间不能共享Session,这与,这与Application不同。不同。Session对对象象在在很很多多方方面面与与Application对对象象有有着着相相似似性性及及可可
3、比比性性。虽虽然然很很相相似似,但但是是在在本本质质上上有有着着很很大大的的差差别别。比比如如对对于于同同一一个个页页面面,不不同同的的访访问问者者可可以以创创建建不不同同的的Session,但但是是Application的值是相同的,只被创建一次。的值是相同的,只被创建一次。Application对象主要被用于:对象主要被用于:1)统计网站访问的人数。)统计网站访问的人数。2)统计广告点击的次数。)统计广告点击的次数。3)创建聊天室。)创建聊天室。4)读取数据库中的数据等。)读取数据库中的数据等。而而Session对象则常被用在:对象则常被用在:1)存储用户的首选项。)存储用户的首选项。2)
4、保存用户的身份标记,实现用户的身份认证和权限管理等。)保存用户的身份标记,实现用户的身份认证和权限管理等。8.2 课堂教学课堂教学8.2.1 Application对象及其使用对象及其使用Application对对象象包包含含许许多多的的集集合合、方方法法和和事事件件,但但是是它它没没有有属属性,这点与其他的性,这点与其他的ASP内置对象有着很大的区别。内置对象有着很大的区别。1Application对象的集合对象的集合ASP的的Application对对象象有有两两个个集集合合:Contents和和StaticObjects。Contents集集合合是是由由所所有有通通过过脚脚本本语语言言添
5、添加加到到应应用用程程序序的的变变量量和和对对象象组组成成的的集集合合,可可以以使使用用这这个个集集合合来来获获取取给给定定的的应应用用程程序序作作用用域域的的变变量量列列表表或或指指定定某某个个变变量量为为操操作作对对象象。StaticObjects集集合合包包含含所所有有的的在在Application对对象象的的指指定定范范围围内内,在在Global.asa文文件件中中由由标标记记创创建建的的对对象象。可可以以通通过过该该集集合合来来确确定定某某个对象的指定属性或遍历所有对象的所有属性。个对象的指定属性或遍历所有对象的所有属性。(1)Contents集合集合Contents集集合合是是Ap
6、plication对对象象所所记记录录的的所所有有非非对对象象变变量量,这这是是Application对象默认的集合,因此下述两种格式是等价的:对象默认的集合,因此下述两种格式是等价的:Application.Contents(变量名变量名)Application(变量名变量名)其中,其中,“变量名变量名”是需要操作的是需要操作的Application变量名称。变量名称。【例例8-1】使用使用Application对象对象编写计数器程序,如图编写计数器程序,如图8-1所示。所示。程序程序8_1.asp的的代码代码可可以以在在一一般般变变量量与与Application变变量量之之间间互互相相赋赋
7、值值。上上述述代代码码可可以改写为:以改写为:使用使用Application变量变量 使用使用Application变量变量 您是第您是第位来客位来客 说明:说明:1)多多次次打打开开浏浏览览器器,运运行行程程序序8_1.asp,可可以以看看到到Application变量值的改变。变量值的改变。2)Application对对象象的的生生命命周周期期是是在在服服务务器器运运行行期期间间,因因此此当当虚虚拟拟服服务务器器关关机机后后,Application变变量量将将丢丢失失。要要想想保保留留变变量量的的值,需要用到文件系统的概念。值,需要用到文件系统的概念。在在Contents集合中,有集合中,
8、有3种方式读取种方式读取Application变量的值。变量的值。1)以)以Application.Contents(变量名变量名)的形式。的形式。2)以)以Application(变量名变量名)的形式。的形式。3)以所定义的)以所定义的Application变量序号读取,即变量序号读取,即Application.Contents(i)的形式读取,其中的形式读取,其中“i”为变量的序号。为变量的序号。【例例8-2】使使用用Application变变量量序序号号读读取取Application变变量量的的值值,如图如图8-2所示。所示。程序程序8_2.asp的的代码代码 说明:说明:1)对对于于C
9、ontents集集合合中中的的Application变变量量,若若要要遍遍历历所所有有的的值值,还还可可以以采采用用循循环环结结构构进进行行读读取取。可可以以采采用用For Each In的的形形式式,也也可可以以采采用用For To Next的的形形式式,但但是是这这样样可可能能将将服服务务器中的所有器中的所有Application变量读出,因此一般不提倡使用。变量读出,因此一般不提倡使用。2)如如果果Application对对象象保保存存有有数数组组等等项项目目,若若采采用用循循环环结结构构来遍历,则会出现错误,故要慎用。来遍历,则会出现错误,故要慎用。3)Application对对象象中
10、中不不能能保保存存ASP的的内内置置对对象象。下下述述代代码码将将引发引发“内部服务器错误内部服务器错误”:Set Application.Contents(对象对象)=Request(2)StaticObjects集合集合Application对对象象的的SaticObjects集集合合是是通通过过标标记记在在Global.asa文文件件中中创创建建的的。在在StaticObjects集集合合中中保保存存着着所所有有在在Application对对象象范范围围内内的的由由标标记记创创建建的的变变量量和和对对象象,通通过过该该集集合合,可可以以检检索索和和读读取取这这些些变变量量和和对对象象。在
11、在Global.asa文文件件中中,使使用用如如下下的的代代码码可可以以建建立立一一个个Application级的对象:级的对象:说说明明:Contents集集合合中中可可以以使使用用的的对对Application变变量量的的操操作作方方法,在这里都可以使用。法,在这里都可以使用。(3)存储数组存储数组在在Application对对象象中中可可以以存存储储数数组组,但但是是不不能能直直接接更更改改存存储储在在数数组组中中的的元元素素,这这是是因因为为Application对对象象是是作作为为集集合合实实现现的的。如如果果将将数数组组存存放放在在Application对对象象中中,则则对对该该数
12、数组组进进行行操操作作时时,应应先先建建立立数数组组的的一一个个副副本本,对对该该副副本本操操作作完完毕毕,再再将将其其存存放放到到Application对象中。对象中。【例例8-3】使用使用Application对象存储数组。程序对象存储数组。程序8_3.asp的的代码代码2Application对象的方法对象的方法Application对对象象共共有有两两个个方方法法,它它们们分分别别是是Lock方方法法和和Unlock方法。方法。在在一一个个ASP应应用用程程序序中中,如如果果同同时时访访问问的的用用户户很很多多,就就可可能能会会出出现现很很多多用用户户同同时时修修改改某某个个Appli
13、cation变变量量,这这时时如如果果没没有有一一个个良良好好的的机机制制来来确确保保同同一一时时刻刻仅仅有有一一个个用用户户修修改改和和存存取取Application变变量量,后后果果将将是是无无法法想想像像的的。Lock和和Unlock方方法法正正是是为为此此而而设设计计的的,在在使使用用Lock以以后后,可可以以防防止止其其他他用用户户修修改改存存储储在在Application对对象象中中的的变变量量,直直到到用用户户使使用用Unlock方方法法或或超超时时,才才解解开开Application对对象象,这这样样就就确确保保在在同同一一时时刻刻只只有一个用户可以修改和存储有一个用户可以修改
14、和存储Application对象中的变量。对象中的变量。Lock方法和方法和Unlock方法的语法格式分别如下:方法的语法格式分别如下:Application.LockApplication.Unlock【例例8-4】在在例例8-2中中使使用用Lock方方法法和和Unlock方方法法确确保保同同一一时时刻刻只有一个用户可以修改和存储只有一个用户可以修改和存储Application对象中的变量。对象中的变量。程序程序8_2.asp改为如下的改为如下的代码代码3Application对象的事件对象的事件Application对对象象有有两两个个事事件件,OnStart事事件件和和OnEnd事事件件
15、。Application_OnStart事事件件是是在在Application对对象象开开始始时时被被触触发发,并并且且只只在在第第一一个个用用户户的的第第一一次次请请求求时时触触发发一一次次。它它主主要要用用于于初初始始化化变变量量、创创建建对对象象和和运运行行其其他他代代码码。Application_OnEnd事事件件是是在在整整个个Application对对象象结结束束时时才才被被触触发发的的。当当它它被被触触发发时时应用程序的所有变量也相应被取消。应用程序的所有变量也相应被取消。Application对对象象的的Application_OnStart和和Application_OnEn
16、d事件过程只能在事件过程只能在Global.asa文件中创建。文件中创建。8.2.2 Session对象及其使用对象及其使用Session对对象象是是ASP技技术术中中非非常常重重要要的的对对象象,是是实实现现用用户户会会话话管管理理的的重重要要手手段段,是是编编写写有有关关应应用用Web程程序序的的常常用用工工具具。Session其其实实指指的的就就是是用用户户从从到到达达某某个个站站点点直直到到离离开开为为止止的的那那段段时时间间内内,服服务务器器端端分分配配给给用用户户的的一一个个存存储储信信息息的的全全局局变变量量的的集集合合,这这些些变变量量可可以以是是自自动动生生成成的的,也也可可以以是是编编程程者者在在服服务务器器端脚本程序中定义的。端脚本程序中定义的。当当用用户户在在应应用用程程序序的的Web页页面面之之间间跳跳转转时时,存存储储在在Session对对象象中中的的变变量量将将不不会会丢丢失失,而而且且在在整整个个用用户户会会话话中中会会一一直直存存在在下下去。去。当当用用户户请请求求ASP应应用用程程序序的的某某个个页页面面时时,若若用用户户尚尚未未建建立立Sessio
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1