




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章聊天室模块设计与开发,学习目标:1)掌握Response和Request对象实现动态交互页面的方法。2)了解Application对象和Session对象的属性、方法、事件。3)掌握Application对象和Session对象追踪用户信息,实现用户间信息共享的方法。4)掌握聊天室的开发原理及基本功能。5)了解Global.asa文件的用途。,4.1需求分析,聊天室程序要求聊天信息能实现即时共享,即要求有一个变量,可以在整个应用程序中随时被访问。ASP的Application对象就具有该功能,该对象提供了完善的访问和保护功能。聊天室的用户及聊天内容是不断变化的,Application变量也会随机发生变化。为了让客户端及时知道这些变化,要求客户端浏览器定时刷新,不断去读取最新的Application中的信息。聊天室的核心技术是利用框架技术实现在一个页面内同时显示聊天内容、浏览和选择聊天对象,发布信息等,本章要实现的一个简单聊天室的运行界面如图4-1所示。,图4-1简单聊天室的运行界面,4.2任务分解,要实现该聊天室的功能,需要从以下几个方面实现:(1)页面的框架布局聊天主界面的设计。(2)登录进入聊天室,用Session实现用户登录信息的保存。(3)显示在线用户的发言。(4)在线人数的统计,即Application的计数功能实现。接下来将对制作聊天室涉及的基础知识和4个子任务进行详细讲解。,4.2.1任务一:聊天室框架页面的创建,目前网页布局主要有表格布局、框架布局和DIV+CSS布局。聊天室模块使用的是框架布局。框架布局的特点是可以将浏览器窗口划分为若干个子窗口,每个子窗口可以分别显示不同的网页,网页之间相互独立。由一个网页将这些分开的网页组成一个完整的网页,显示在浏览器中。框架布局的好处是每次浏览者发出对页面的请求时,只下载发生变化的框架页面,其他子页面保持不变。使用框架可以非常方便地完成聊天区和用户列表的刷新功能。,下面具体讲解框架布局的使用格式及属性。,1框架布局格式,其中和标签是框架集和框架标记,其标记的属性设置下面举例介绍。,2框架集和框架属性,(1)框架集属性COLS:在水平方向上将浏览器分割成多个窗口,取值有3种形式:像素、百分比(%)和相对尺寸(*),例如:ROWS:在垂直方向上将浏览器分割成多个窗口,取值与COLS类似,也是3种形式。FRAMEBORDER:指定框架周围是否显示边框,取值为1(显示边框,默认值)或0(不显示边框),例如:FRAMESPACING:指定框架之间的间隔,以像素为单位。默认是无间隔的。.BORDER:指定边框的宽度,frameborder属性为l时该属性才有效。framset,3框架属性,使用FRAME标记可以设置框架的属性,包括框架的名称、框架是否包含滚动条以及在框架中显示的网页等。FRAME标记的常用属性及其说明如下。NAME:指定框架名称。SRC:指定在框架中显示的网页文件(HTML、ASP、JSP等)SCROLLING:指定框架是否包含滚动条,其属性可以是yes、no、或auto。,练习4-1简单聊天室界面布局的实现。,程序清单:4-1.asp(见实例源程序)程序的运行结果如图4-2所示,4.2.2任务二:Session对象的使用,Session对象语法结构使用Session对象前,必须确认浏览器的Cookie功能已启用(可采用默认设置)。如果以前更改过,Cookie功能可以通过浏览器的设置来开启。以IE浏览器为例,打开IE浏览器的“Internet选项”,然后单击“隐私”选项卡,单击“默认”按钮即可。Session对象的语法如下:Session.collection|property|method其中collection、property和method分别表示集合、属性和方法。注意:Session是用户级的对象,也就是说该对象中的数据,只能被该用户独享。【练习4-2】简单的Session应用(见4-2.asp实例源程序),Session对象的集合会话中保存的数据是以集合的形式存在的。Session对象有两个集合。分别是Contents和StaticObjects。Contents集合包含所有通过脚本命令添加到应用程序中的项目;StaticObjects集合包含通过标记创建的并给定应用程序作用域的对象。1.Contents集合Session对象的Contents数据集合包含通过Server对象的CreateObject方法创建的对象和通过Session对象声明建立的变量,不包含以标记定义的对象。Session对象存在期间,存储在Session对象的Contents数据集合中的信息是有效的。Contents是Session对象的默认集合,包含已用脚本命令添加到会话中的项目。其语法结构如下:Session.Contents(key),”key”为用于指定要获取的项目名称。若数据要在整个用户会话过程中起作用,可以将该数据存储在Session对象的Contents集合中。例如:上述脚本也可以写成以下形式:,Session对象的集合,2StaticObjects集合StaicObjects数据集合包含应用标识创建,并给定了应用程序作用域的对象。可以使用该集合设置确定对象指定属性的属性值、遍历集合和检索所有静态对象的所有属性等。该集合的语法如下:Session.StaticObjects(key),key用于指定需检索的项目的键值。在使用StaticObjects数据集合时,需要应用标记创建应用程序作用域的对象。该标记需要放在Global.asa文件中。Global.asa文件必须放在IIS服务器的根目录下。,Session对象的属性,1.SessionID属性每一个会话都有一个由系统自动分配的、唯一的、长整型数作为标识,即SessionID。在页面中输入如下代码,就可以查看当前用户的Session的标识:当首次创建用户会话时,SessionID就产生,在会话未失效之前,其值不会改变,一般保存在客户端浏览器的cookies中。SessionID就像一把钥匙,用户只能利用自己的SessionID访问属于自己的会话变量。【练习4-3】输出SessionID值(见实例源程序),Session对象的属性,2Timeout属性Timeout属性用于设置会话变量的超时时限,即在服务器内存中存在的时间,以分钟为单位。应用程序中可以用赋值语句为该属性赋予一个确定的值,以规定用户Session对象的使用时限。其默认值为20分钟。如果客户端浏览器在Timeout属性规定的时间内没有动作,即没有提交任何请求信息,或者关闭浏览器,或者连接到其他站点上,Web服务器将自动释放该用户Session对象占用的资源。设置Session对象超时的语法格式如下:Session.Timeout=TimeValue如,设置10分钟后超时,其代码为:除上面介绍的属性外,还可以利用Session来存取数组信息。数组被作为一个整体来存取,即用户不能直接读取或改变Session数组中某个元素的值。【练习4-4】使用Session存储数组(4-4.asp代码见第4章实例源程序),图4-3使用Session存储数组实例,3LCID属性LCID属性的作用是设置或返回一个指定区域的标识符,标识符为整数。当设置标识符后,时间、日期、货币等内容都会被格式化为相应的格式。,Session对象的方法,Session对象有3个方法,这3个方法都起到删除的作用,只是删除的对象不同。Session对象的方法简单含义见表4-1。表4-1Session对象的方法方法描述Abandon:清除存储在Session中的所有变量并释放其资源Contents.Remove:从Contents集合中删除一个项目Contents.RemoveAll:从Contents集合中删除所有项目,Session对象的事件,1Session_OnStart事件Session_OnStart事件是在第1次启动Session对象时触发此事件。服务器在执行请求的页面之前先处理Session_OnStart事件中的脚本,可以在该事件中设置会话级变量,在访问的每个Web页面都可以应用变量从而使单个用户的信息在页面间共享。事件的语法如下:SubSessionOnStartEndSub处理Session_OnStart事件时,内置对象Application、ObjectContext、Request、Response、Server和Session等对象都可以在Session_OnStart事件脚本中使用和引用。2Session_OnEnd事件Session_OnEnd事件则是在结束Session对象时被触发的,也就是说,当会话超时或会话被放弃时将引发该事件。Session_OnEnd事件的语法格式如下:SubSession_OnEndEndSub如果用户在会话超时时间内没有请求任何页面,那么Session_OnEnd事件就会被触发,此时Session对象将会自动结束,但不会影响到其他用户。应用Abandon方法可以让Session对象变量立即失效,并激活Session_OnEnd事件。,4.2.3任务三:Applicacation对象的使用,Application对象中包含的数据可以在整个Web站点中被所有用户使用,并且可以在网站运行期间持久保存数据。Application对象是网站建设中经常使用的一项技术,利用Application对象可以完成统计网站的在线人数、创建多用户游戏以及多用户聊天室等功能。其应用的一般格式为:Application.collection|method。Collection为Application对象的数据集合,method为Application对象的方法。Application对象可供全体应用程序使用,它是一个应用程序级的对象,可以使用Application对象定义变量,该变量类似于一般的程序设计语言中所谓的“全局变量”。用此变量保存的信息,在同一ASP程序中的所有用户可共享此信息。Application对象所保存的信息,在服务器运行期间可永久性保存(如网页计数器,自动记录页面浏览的次数)。,Application对象的集合,Application对象的集合有两个,即Contents和StaticObjects。Contents数据集合是存储Application对象中所有数据的集合,并且可以使用该集合获取给定的应用程序作用域的项目列表或者指定一个特殊项目为操作对象。其语法格式为:Application.Contents(key),“key”用于指定要获取的项目的名称。StaticObjects数据集合主要用于存储在Application对象范围中所有使用标签创建的对象。通常应用该集合来设置某对象的指定属性或遍历集合检索所有静态对象的所有属性。其语法格式为:Application.StaticObjects(key),“key”用于指定要检索的项目的值。,1.使用Contents集合保存应用程序信息Application对象的Contents集合包含了在应用程序一级未使用OBJECT标记声明的项目。其格式为:Application.Contents(Key)或Application(Key)参数Key指定要获取的项目的名称。例如:2.使用StaticObjects集合保存应用程序信息Application对象的StaticObjects集合包含所有的在应用程序范围内使用OBJECT标记创建的对象。其格式为:Application.StaticObjects(Key),参数Key指定要检索的项目的值,Application对象的集合,Application对象的方法,Application对象有两个方法:即Lock和UnLock方法。使用这两个方法可以确保多个用户无法同时改变某一变量的值。1)Lock方法。使用Application对象的Lock方法可以阻止其他客户修改存储在Application对象中的变量,以确保在同一时刻仅有一个客户可修改和存取Application变量。其使用格式为:Application.Lock。2)Unlock方法。使用Application对象的Unlock方法可以使Application中的变量解除锁定以允许其他用户修改存储在该对象中的变量。如果未显式调用该方法,Web服务器将在.asp文件结束或超时后解锁Application对象。其使用格式为:Application.Unlock。【练习4-5】使用Application对象来记录本页面被访问次数。,图4-4application对象应用示例,Application对象的事件,Application对象有两个事件,Application_OnStart事件和Application_OnEnd事件。如果希望在启动和退出应用程序时执行指定的操作,可以在global.asa文件中编写这两个事件的脚本。(1)Application_OnStart事件Application_OnStart事件在创建第一个新的会话之前发生,也就是在Session_OnStart事件之前发生。语法:SubApplication_OnStartEndSub,global.asa文件,(1)Global.asa文件的用途Global.asa文件是ASP应用程序中使用到的一个特殊的文件,它是一个纯文本的文件。Global.asa文件中存放着ASP应用程序运行期间所需的Application对象和Session对象的事件,即Application_OnStart事件、Application_OnEnd事件、Session_OnStart事件和Session_OnEnd事件。另外,在Global.asa文件中还存放有标记声明的对象。在Global.asa文件中声明的过程只能从一个或多个与Application_OnStart、Application_OnEnd、Session_OnStart和Session_OnEnd事件相关的脚本中调用。在基于ASP的应用程序的ASP页中,它们是不可用的。如果要在应用程序之间共享过程,可在单独的文件中声明这些过程,然后使用服务器端包含(SSI)语句将该文件包含在调用该过程的ASP程序中。通常,包含文件的扩展名为.inc。(2)Global.asa文件的结构在Global.asa文件中,所有的代码必须用和标记来界定,而不能使用标记。在和标记间可以使用任何脚本语言来书写,当然要安装相应的脚本引擎。并且要用诸如注明。,Global.asa文件的基本结构,SubApplication_OnStartEndSubSubSession_OnStartEndSubSubSession_OnEndEndSubSubApplication_OnEndEndSub,【练习4-6】效果图,【练习4-7】一个简单的网页计数器的运行结果图,4.2.4任务四:Server对象的使用在ASP中,当处理Web服务器上的特定任务,特别是一些与服务器的环境和处理活动有关的任务时,需要用到Server对象。Server对象通过属性和方法来访问Web服务器,从而实现对数据、网页、外部对象、组件的管理。Server对象概述Server对象提供的方法和属性大多数是为程序的功能服务的。语法格式:Sperty|method说明:其中property和method分别表示属性和方法。1.Server对象的属性Server对象仅支持ScriptTimeout属性,用于指定脚本运行超时值,在脚本运行超过这一时间之后即作超时处理,停止执行。2.Server对象的方法Server对象的方法及其描述见表4-5。,执行指定的ASP文件,使用Server对象的Execute方法可以调用一个.asp文件并对其进行处理。语法格式:Server.Execute(Path)将控制权转移到其他ASP文件使用Server对象的Transfer方法可以将在一个.asp文件中处理的所有信息发送到另一个.asp文件中,其语法格式:Server.Transfer(path),创建服务器组件实例,CreatObject方法用于创建已经在服务器上注册的服务器组件(ActiveX控件)的实例。包括所有的ASP内置的组件:AdRotator、BrowserCapabilities、CollaborationDataObjectsforNTS、ContentLinking、ContentRotator、Counters、DatabaseAccess、FileAccess、PageCounter等等,也可以是第三方提供的ActiveX组件。组件只有在创建了实例以后才可以使用,这些组件扩展了ASP的功能(组件将在后面的章节中介绍)。语法格式:Server.CreateObject(progID)例如,创建一个ADODB组件的实例,可以使用下述代码:,将相对或虚拟路径映射为物理目录,使用Server对象的MapPath方法可以将指定的相对或虚拟路径映射为服务器上相应的物理目录,所谓的虚拟路径是指Web服务器上的相对路径。语法格式:Server.MapPath(Path)。【练习4.8】Server.MapPath方法应用示例,图4-7Server.MapPath方法应用示例,字符串编码处理,1.HTMLEncode方法使用Server对象的HTMLEncode方法可以对指定的字符串进行HTML编码,从而使该字符串以所需的形式显示出来。语法格式:Server.HTMLEncode(HtmlString)。说明:HtmlString是需要进行HTML编码的字符串。在ASP编程过程中,有时为了特殊的需要,不得不向屏幕输出一些HTML或ASP语言的特殊标记,如等等标记符号,这时则需要用到Server对象的HTMLEncode方法。2.URLEncode方法语法格式:Server.URLEncode(string)说明:其中参数String指定要编码的字符串。URLEncode方法常用于把元素或其它链接的值写到ASP网页。例如要在查询字符串中建立一系列的连接,你会见到如下的字符串:Http%3A%2F%2Fwww%2Ezzuli%2Eedu%2Ecn%3CBR%3E这就是利用URLEncode方法进行编码得到的。,设置脚本最长执行时间,使用Server对象的ScriptTimeout属性可以指定脚本在结束前最大可运行多长时间。语法格式:Server.ScriptTimeout=NumSeconds。说明:参数NumSeconds指定脚本在被服务器结束前最大可运行的秒数,默认值为90秒。也可以在Internet信息服务管理单元的“应用程序配置”对话框来更改这个默认值,如果将其设置为-1,则脚本将永远不会超时。当处理服务器组件时,超时限制将不再生效。在下面的例子中,如果服务器处理脚本超过100秒,将使之超时。,4.3开发流程,使用聊天室应先登录,一般还应获取一个帐号才能进入聊天室。本案例相对简单,仅演示其基本设计思路和方法。因前面章节介绍过注册功能的实现,所以本例中直接登录进入聊天室主页,然后选择对象进行交流。本案例的设计流程如图4-8所示。,4.3.1聊天室实例功能分析与设计,图4-8实例运行流程图,4.3.2聊天室登陆主界面实现,1用户登录验证界面用户登录验证主要用来验证输入的呢称和已经登录的用户昵称是否冲突。如果昵称相同,系统将弹出提示窗口,否则,将用户的昵称、IP和头像写入Application中,并进入聊天室主页面。用户登录的运行结果如图4-9所示.,2用户登录验证页面的实现,用户登录验证页面主程序分两部分,第1部分是用户登录的表单元素,包括登录图像、登录昵称及“登陆”按钮,其登录表单的代码见第四章综合实例index.asp源程序的后半部分,可由Dreamweaver直接生成。第2部分是对用户信息的处理。用户提交后首先判断是否存在该登录昵称,如果存在接着判断昵称是否重复。如果昵称已存在,弹出提示,并返回登录页;否则,将用户昵称、头像和用户IP写入到Aplication中。,4.3.3聊天室主界面实现,1用户登录模块用户通过登录入口,进入聊天室。用户登录模块主要用于分配用户昵称以及验证用户重名。网页文件为index.asp。所涉及的判断用户是否重名及记录登陆信息的代码见实例的源程序2.退出模块退出模块的网页文件为:Exit.asp。主要用于退出聊天室系统,并将Session清空,并删除application中的信息程序。3.用户发言模块用户发言模块的网页文件为:Input.asp。主要用于用户发言聊天,并设置表情与文字颜色。4.显示在线用户模块显示在线用户的文件为:left.asp,其调用的文件有AjaxRequest.js,主要用于实时显示在线的用户列表。5.显示发言信息模块显示发言信息模块的文件为:main.asp.主要用于及时显示聊天记录。,4.4拓展知识,4.4.1sesion与application的区别1.Application是全局对象,在程序运行时建立,只被创建一次。也就是说虽然你的程序发布了,但是这个时候你的程序并没有被运行,所以Application对象没有被创建,而这个时候有一个人访问了你的网站,那么你的程序就被第一次运行了,从而使Application对象被创建,当第二个人访问你的网站的时候Application对象是不会被再次创建的,可以拿过来就使用。我们可以使用Application对象统计在线的用户数。一句话总结:Application对象可以多用户同时使用。2.Session是会话的意思,为单个用户保存数据,对单个用户有效,也叫会话级变量。用户访问网站的时候Session被建立,用户关闭网页的时候Session被释放。Session可以用来保存用户登陆信息等。3.Appliction与Session的生命周期不一样。Appliction是基于应用程序的,而Session是基于会话的。因此,Applicatio要比Session的可见范围要大,也就是说Application在一个网站中不仅所有页面都能看得见这个变量,就连所有访问该网站的全部用户都可以看见这个变量。也就是可见范围最广的全局对象。,4.4.2global.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文件中,所有的代码必须用和标记来界定,而不能使用标记。在和标记间可以使用任何脚本语言来书写,当然要安装相应的脚本引擎。并且要用诸如注明。,【例4.9】在页面上显示目前在线人数,图4-10Global.asa示例程序运行结果,本章小结,本章介绍了ASP内置对象中的Application、Session和Server的功能和使用方法。从它们的属性、方法、事件等各方面详细讲解了如何使用这些内置对象来实现ASP的各种功能,最后用一个简单的文字聊天室综合实例说明了其应用场合。使用ASP内置对象是ASP编程的重要部分,是进行工程项目制作不可或缺的基础知识。因此,读者应当结合书中提供的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 6飞向蓝天的恐龙 教学设计-2023-2024学年语文四年级下册统编版
- 2025合同范本创新与完善
- Lesson 3 Please send me a card教学设计-2023-2024学年初中英语第二册新概念英语
- 5.2自然环境的地域差异性教学设计-2024-2025学年高中地理人教版(2019)选择性必修1
- 第一单元第4课《穿针引线的艺术·绣品拍卖会》教学设计-2024-2025学年劳动五年级上册东北师大版
- 2025关于石油运输合同范本
- 2025合同争议解决
- 2025民间个人借款合同协议样本
- 1.4 有理数的大小比较教学设计-2025-2026学年初中数学浙教版2012七年级上册-浙教版2012
- 2025市场营销聘用合同范文
- 绿化小型工程合同范例
- 涂层材料与叶轮匹配性研究-洞察分析
- 《国际跳棋教学》课件
- 食品进货与供货商档案相对应制度模版(3篇)
- 防治血吸虫病主题班队课
- 讯问笔录课件教学课件
- 广东省珠海市香洲区文园中学2024-2025学年七年级上学期10月月考数学试卷(无答案)
- 12SG121-1 施工图结构设计总说明
- NB-T31053-2014风电机组低电压穿越建模及验证方法
- 《参与民主生活》参考教案
- 晕厥诊断与治疗中国专家共识(全文)
评论
0/150
提交评论