ASP动态网站开发教程.ppt_第1页
ASP动态网站开发教程.ppt_第2页
ASP动态网站开发教程.ppt_第3页
ASP动态网站开发教程.ppt_第4页
ASP动态网站开发教程.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章ASP,Application对象Session对象Server对象,5.1Application和Session对象,在同一虚拟目录及其子目录下的所有.asp文件构成了ASP应用程序。使用Application对象,可以在给定的应用程序的所有用户之间共享信息,并在服务器运行期间持久的保存数据。通过Application对象所提供的方法和集合,可以使用编程的方法控制ASP的应用程序。Application对象包含许多的集合、方法和事件,但是它没有属性,这点与其他的ASP内置对象有着很大的区别。,5.1.1利用Application存储信息,Application对象是一个应用级的对象,它可以产生一个全部WEB应用程序都可以访问的变量。语法:保存:Application(“Application名字”)=变量或字符串信息获取:a=Application(“Application名字”),利用Application存储信息,Test5_5.asp,Test5_6.asp,5.1.2Application对象集合1.Application对象的集合ASP的Application对象有两个集合:Contents集合和StaticObjects集合。Contents集合是由所有通过脚本语言添加到应用程序的变量和对象组成的集合,可以使用这个集合来获取给定的应用程序作用域的变量列表或指定某个变量为操作对象。StaticObjects集合包含所有的在Application对象的指定范围内在Global.asa文件中由标记创建的对象。可以通过该集合来确定某个对象的指定属性或遍历所有对象的所有属性。,(1)Contents集合Contents集合是Application对象所记录的所有非对象变量,这是Application对象默认的集合,因此下述两种格式是等价的:Application.Contents(变量名)Application(变量名)说明:“变量名”是需要操作的Application变量名称。使用Application对象编写计数器程序。使用Application变量使用Application变量您是第位来客,说明:多次打开浏览器,运行程序,可以看到Application变量值的改变。Application对象的生命周期是服务器运行期间,因此当虚拟服务器(你的PC)关机后,Application变量将丢失。要想保留变量的值,需要用到文件系统的概念。,(2)StaticObjects集合Application对象的SaticObjects集合是通过标记在Global.asa文件中创建的。在StaticObjects集合中保存着所有在Application对象范围内的由标记创建的变量和对象,通过该集合,可以检索和读取这些变量和对象。在Global.asa文件中,使用如下的代码可以建立一个Application级的对象:说明:Contents集合中可以使用的对Application变量的操作方法,在这里都可以使用。,(3)存储数组在Application对象中可以存储数组,但是不能直接更改存储在数组中的元素,这是因为Application对象是作为集合实现的。如果将数组存放在Application对象中,则对该数组进行操作时,应先建立数组的一个副本,对该副本操作完毕,再将其存放到Application对象中。,2.Application对象的方法Application对象共有两个方法,它们分别是Lock方法和Unlock方法。在一个ASP应用程序中,如果同时访问的用户很多,就可能会出现很多用户同时修改某个Application变量,这时如果没有一个良好的机制来确保同一时刻仅有一个用户修改和存取Application变量,后果将是无法想像的。Lock和Unlock方法正是为此而设计的,在使用Lock以后,可以防止其他用户修改存储在Application对象中的变量,直到用户使用Unlock方法或超时,才解开Application对象,这样就确保在同一时刻只有一个用户可以修改和存储Application对象中的变量。Lock方法和Unlock方法的语法格式分别如下:Application.LockApplication.Unlock,使用Lock方法和Unlock方法确保同一时刻只有一个用户可以修改和存储Application对象中的变量。Application实例thenApplication.Lockifi=0thenApplication(chinese)=Application(chinese)+1chat=“中文”变量1elseifi=1thenApplication(english)=Application(english)+1chat=“英文”变量2endif,Response.write欢迎当I=1时表示applianction中的第二个变量即english,3.Application对象的事件Application对象有两个事件,OnStart事件和OnEnd事件。Application_OnStart事件是在Application对象开始时被触发,并且只在第一个用户的第一次请求时触发一次。它主要用于初始化变量、创建对象和运行其它代码。Application_OnEnd事件是在整个Application对象结束时才被触发的。当它被触发时应用程序的所有变量也相应被取消。Application对象的Application_OnStart和Application_OnEnd事件过程只能在Global.asa文件中创建。,使用Application对象时必须注意:1)不能在Application对象中存储ASP内建对象。例如,下面的每一行都返回一个错误。SetApplication(var1)=SessionSetApplication(var2)=Request2)若将一个数组存储在Application对象中,请不要直接更改存储在数组中的元素。应该先建立数组的一个副本,对该副本操作完毕,再将其存放到Application对象中。redimbook(2)book(0)=高等数学习题及解答book(1)=高等数学复习指导book(2)=政治经济学习题及解答Application(复习指导书)=book,5.1.2Session对象及其使用1、Session对是实现用户会话管理的重要手段,Session其实指的就是用户从到达某个站点直到离开为止的那段时间内,服务器端分配给用户的一个存储信息的全局变量的集合,这些变量可以是自动生成的,也可以是编程者在服务器端脚本程序中定义的。2、与Application对象不同,即使有很多用户同时访问一个Web服务器的同一ASP程序,他们的Session对象的内容亦是不同的。3、当用户在应用程序的Web页面之间跳转时,存储在Session对象中的变量将不会丢失,而且在整个用户会话中会一直存在下去。4、当用户请求ASP应用程序的某个页面时,若用户尚未建立Session对象,服务器端就会自动创建一个Session对象,并指定一个唯一的SessionID,这个ID只允许此SessionID的拥有者使用,不同的用户的Session存储着各自特定的信息,如用户姓名、性别、浏览器类型、显示器分辨率、访问时间等,这将有利于服务器对用户身份的鉴别,从而实现Web页面的个性化。,5、要注意的是,会话状态仅在支持cookie的浏览器中保留,如果客户关闭了Cookie选项,Session也就不能发挥作用了。6、Session对象有两种结束方法:一种是隐式方式,另一种是显式方式。隐式方式:是当用户访问Web服务器的时间间隔超过Session对象的TimeOut属性设置的时间限制时,Session对象自动结束;显式方式:则是利用Session对象的Abandon方法来中止Session。当Session结束之后,Session对象的变量也将被释放,其值不可再用。,1.Session对象的集合与Application对象一样,Session对象也有两个集合:Contents集合和StaticObjects集合。其中,Contents集合保存所有非对象的Session变量,而StaticObjects集合则保存所有的Session对象变量。,(1)Contents集合Contents集合是使用Session对象定义的在ASP应用程序中的一组变量。这些变量的作用域为用户层,并且在整个ASP应用程序都是可用的。这是Session对象默认的集合,因此下述两种格式是等价的:Session.Contents(变量名)Session(变量名),使用Session变量使用Session变量您是第次来访!,特别注意:打开浏览器,执行程序,显示“您是第1次来访!”,如图左所示;单击“刷新”按钮,可以看到来访次数增加,如图右所示。重新打开一个浏览器,再次执行此程序,仍然显示“您是第1次来访!”。这是因为每个浏览器都有自己的Session对象。,(2)SaticObjects集合Session对象的SaticObjects集合是通过标记在Global.asa文件中创建的。在StaticObjects集合中保存着所有在Session对象范围内的由标记创建的变量和对象,通过该集合,可以检索和读取这些变量和对象。在Global.asa文件中,使用如下代码可以建立一个Session级的对象:然后即可以使用Session对象的SaticObjects集合来引用了。当然,Session对象的Contents集合可以使用的方法,在这里都可以使用。,(3)与Application对象的比较它们的区别就在于Application对象的变量是多用户共享的,而Session对象的变量是针对某一特定用户的。随着一次会话的结束,Session对象的变量也就取消了。但是Application对象的变量不会因为某一个甚至全部用户的离开而消失,它一旦被建立,直到网站关闭或者这个Application被卸载才被取消。该计数器有一个缺点:只要浏览者反复单击“刷新”按钮,访客人数就会一直累计。这是不合理的,有时网站举办赠奖活动:第10万位登录者可以获得奖品,那么投机者就会连续单击“刷新”按钮,直到成为获奖者。,2.Session对象的属性(1)SessionID属性SessionlD属性返回Session的标识ID。在每一个Web站点,Web服务器的IIS为了能够跟踪访问者,在每一个用户刚登录时,服务器给用户分配的唯一的标识号ID,在新的Session开始前,Web服务器将SessionlD存储在客户端的浏览器中,以便下次访问服务器时提交给Web处理程序,Web处理程序根据这个SessionID找到服务器中以前储存的信息并使用它。Session对象的SessionID属性是一个只读的属性,它一般在是IIS在内部使用,以识别在Session中的访问者,也可用于Web页面的注册统计。语法格式:Session.SessionID可以使用下面的方法来访问SessionID的值:或是,(2)TimeOut属性对于一个登录到ASP应用程序的用户,如果用户在系统默认的时间内未进行其它任何操作时,当设置的时间一到便自动撤销这个用户的Session,这样就可以防止系统的资源被浪费。属性的设置格式为:Session.TimeOut=MaxTime其中,MaxTime是会话超时的时间,以分钟计。,(3)LCID属性Session对象LCID属性可以用来设置动态的文本内容显示时所使用的格式,如时间、日期、数字、货币等等。这个属性主要是针对不同国家的用户在访问时,时间、日期、数字、货币等等显示格式的不同习惯而做相应的设置,一经设定,在整个ASP应用程序中都依照此设定来显示。其语法格式如下:Session.LCID=LocalID其中,LocalID是所设定的区域码,它是一个整型数字。如Session.LCID=1033表示按照美国的习惯显示。通过这个属性,可以制作一个国际化的Web站点。,(4)CodePage属性Session对象的CodePage属性可以用来设置ASP应用程序所使用的字库,每一个国家都有不同的字库,即使同一国家也有着不同的字库。这个属性主要是针对不同国家的用户在访问时,显示所用字符的不同而做相应的设置,一经设定,在整个ASP应用程序中都依照此设定来显示。其语法格式如下:Session.CodePage=CodeID其中,CodeID是所设定的区域码,它是一个整型数字。如Session.CodePage=936表示使用汉字国标字库显示。,3.Session对象的方法Session对象默认的生命周期起始于浏览器第一次与服务器联机时,终止于浏览器结束联机时,或浏览器超过20分钟没有存取网页。由于Session对象存储在服务器的内存,所以一旦联机的浏览器越多,网页的执行效能就越低,为了不影响执行效能,最好在确定不需要用到Session对象的时候(例如浏览者注销网页),便以手动的方式结束Session对象,这需要调用Session对象的Abandon方法:Session.Abandon说明:Session对象的Abandon方法只是用来取消Session变量,并不取消Session对象本身,Session变量的清除亦是在本脚本执行完以后才进行的。,5.Session对象与Cookie的关系Session数据存储在服务器上,Cookie数据是存储在浏览器本机里的。没有人可以通过查看Cookie来得到你的Session里的内容,因为,每一个Session都对应一个由Web服务器指定的唯一识别符SessionlD,在浏览器中使用Cookie来存储这个SessionID,真正的数据还是存储在Web服务器上的。当用户第一次请求ASP应用程序中的某个页面时,ASP要检查HTTP请求头信息,查看是否有名为ASPSESSIONID的Cookie发送过来。如果无,则服务器会启动新的对话,并为该对话生成一个全局唯一的值,即SessionID,再把这个值作为新的ASPSESSIONIDCookie值发送给客户端。使用这种Cookie,可以防问存储在服务器上的属于客户程序的有关信息。Session对象最常见的作用就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。另外Session还经常被用在判别客户身份的程序中。要注意的是,对话状态仅在支持Cookie的浏览器中保留,如果客户关闭了Cookie选项,Session也就不能发挥作用了。,在IE6.0中,点击“工具”菜单中的“Intenet选项”菜单项,打开“Intenet选项”对话框,选择“隐私”选项卡,单击其中的“高级”按钮,如图5-23左所示。在打开的“高级隐私策略设置”对话框中选中“覆盖自动cookie处理”复选框,然后选择“拒绝”选项,如图5-23右所示。单击“确定”按钮返回浏览器。此时,已经关闭了cookie,不仅6.2.3中有关cookies的例题不能正常运行,再次运行例6-10,看到Session变量也不能发挥作用了。,5.2Global文件Global文件的名称必须是Global.asa且必须存放在应用程序的根目录中,并且每个应用程序只能有一个Global.asa文件。,1.Global.asa文件Global.asa文件是ASP应用程序中使用到的一个特殊的文件,它是一个纯文本的文件。Global.asa文件中存放着ASP应用程序运行期间所需的Application对象和Session对象的事件,即Application_OnStart事件、Application_OnEnd事件、Session_OnStart事件和Session_OnEnd事件。另外,在Global.asa文件中还存放有标记声明的对象。2.Global.asa文件的结构在Global.asa文件中,所有的代码必须用和标记来界定,而不能使用标记。在和标记间可以使用任何脚本语言来书写,当然要安装相应的脚本引擎。并且要用诸如注明。下面给出Global.asa文件的基本结构。,SubApplication_OnStartEndSubSubSession_OnStartEndSubSubSession_OnEndEndSubSubApplication_OnEndEndSub,说明:标记用来声明对象,其中RunAt=Server是必须的,且其值只能是Server,它表明这个Object只能在服务器上执行;“范围”表明本对象的使用用户,当Scope=Session时,表明本对象只给此次登录的用户使用,若Scope=Application,则可以让所有联机用户使用;“名称”是为对象定义的名称;“类名”是该对象的类名称。指明所使用的语言为VBScript,程序在服务器端处理。SubApplication_OnStartEndSub指明应用程序开始时所要执行的代码。SubSession_OnStartEndSub指明一个Session开始时所要执行的代码。SubSession_OnEndEndSub指明一个Session结束时所要执行的代码。SubApplication_OnEndEndSub指明一个应用程序结束时所要执行的代码。,1、Global.asa文件示例。,显示在线人数,Test5_7.asp,2.一个Global.asa文件的实例:SubSession_OnStart建立一个数据库连接Setcn=Server.CreateObject(ADODB.Connection)cn.Provider=sqloledbProvStr=Server=Your_SQL_Server_Name;Database=Northwind;UID=sa;PWD=;cn.OpenProvStrSetSession(cnn)=cnENDSubSubSession_OnEnd断开数据库连接cn.CloseENDSub,5.3Server对象的属性ASP的Server对象只有一个属性:ScriptTimeout属性。决定一个页面中脚本的运行时间,它的时间单位是秒,缺省为90秒。当服务器很忙、或者服务器运行的某个组件陷入循环、或者程序本身具有逻辑上的错误,甚至陷入死循环。这时应使用ScriptTimeout属性。设置Server对象的ScriptTimeout属性应用注意:ScriptTimeout属性的设置必须在ASP程序之前,否则为无效设置。,5.4Server对象的方法1.CreateObject方法CreateObject方法是Server对象中最重要、最常用的方法CreatObject方法用于创建已经在服务器上注册的服务器组件(ActiveX控件)的实例。包括所有的ASP内置的组件:AdRotator、BrowserCapabilities、CollaborationDataObjectsforNTS、ContentLinking、ContentRotator、Counters、DatabaseAccess、FileAccess、PageCounter等等,也可以是第三方提供的ActiveX组件。组件只有在创建了实例以后才可以使用,这些组件扩展了ASP的功能(组件将在后面介绍)。其语法格式如下:Server.CreateObject(ObjectParameter)其中,ObjectParameter是要创建的ActiveX组件类型。ObjectParameter的格式如下:出版商名.组件名.版本号,例如,创建一个ADODB组件的实例,可以使用下述代码:说明:在使用CreateObject创建ActiveX组件时,关键字Set一定不能丢失,否则在使用所定义的对象时会发生错误,并且这种错误在用CreateObject创建组件时并不能被发现,只有在第一次调用该组件时系统才报错,且无详细的错误描述。CreateObject方法创建的对象的作用域默认为页作用域。即:当前ASP文件完成后,该对象即由服务器自动清除。要改变作用域可使用Session对象保留该组件,直到Session对象的生命期结束。当所创建的对象不再需要时,应当释放其所占的系统资源。通常使用Nothing来消除实例对象。例如要释放一个名为myConn的对象,可采用下面的代码:试图创建与ASP内建对象同名的实例对象都是错误的。例如,下述代码将返回错误:(下一章中作详细介绍),2.MapPath方法Server对象的MapPath方法可以将指定的虚拟路径转换成实际的物理路径,其语法格式如下:Realpath=Server.MapPath(UnrealPath)其中,RealPath是指被转换成的文件实际物理路径,UnrealPath是指要进行转换的文件虚拟路径,且在虚拟路径中字符“/”与字符“”被视为相同。,代码如下:Server对象的MapPath方法转换路径Server对象的MapPath方法转换路径P服务器的根目录是:Response.write&Server.MapPath(“/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论