ASP网页编程之谈天室自做 Follow Me
因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。谈天室上彀而没往过谈天室的人,可谓是百里挑一,上面,我们就本人来做个最复杂的谈天室。今朝谈天室显现对话的体例一样平常有两种。一是每隔x秒就把全部对话显现区革新一遍,此方的坏处不言而喻:数据传输量年夜且屏幕有闪灼感;其二是有新的讲话时,才将该内容传送给客户端,并增加在原有对话的尾部,此法数据传输量就对照小且屏幕是光滑转动,视觉效果好。第一种办法的完成已有良多材料先容,因而本文将先容第二种革新体例。
计划思绪:
⑴服务器端只保存最新的30条讲话作为缓冲区,新的讲话内容将最旧的讲话挤出。
⑵每句讲话都分派一个递增的序号。客户端最初呈现的讲话的序号纪录在Session中。
⑶使用埋没框架举行革新,革新时,将Session值与缓冲区的每句讲话的序号举行对照,假如序号年夜于Session值申明该讲话是新的,就将该讲话的数据掏出,并将该讲话的序号值赋给Session。
⑷对话显现区利用document.open()翻开后,就不再封闭,当埋没框架革新时有新数据掏出并传到客户端时,将这些原始数据格局化为要显现的内容(此事情能够在服务器端实行,但为加重服务器的包袱,就将对话的分解事情移交给客户),然后挪用document.writeln办法将讲话的内容写到对话显现区的尾部。
⑸在对话显现区中安排一段主动滚屏的代码,使屏幕主动向下转动,并可经由过程讲话区的复选框来选择是不是主动滚屏。
完成办法:
1、本程序只必要4个文件便可完成:
⑴chat.asp:谈天室框架文件,卖力初始化程序运转情况并随机分派四位数的数字做为用户名,再把页面从上到下分红四部分,顶、底两个框架高度为0。
⑵chatfyq.htm:讲话区,供应输出姓名、讲话的文本框,及一个讲话按钮和一个主动滚屏的开关(复选框),并界说在客户端实行的JavaScript:checksays()(对讲话举行无效性检测)、cls()(清空对话显现区的内容)、write()(初始化对话显现区,界说页面色彩、笔墨巨细,并安排滚屏代码)、sw(username)(在对话区点击人名时,将人名写到讲话框中)、w(un,sa,tn,dt)(将原始数据分解为完全的讲话内容,并增加到对话显现区的尾部)。
⑶chatt.asp:此文件位于顶部的埋没框架(高度为0)中准时革新,把新的讲话的原始数据利用<scriptLanguage=JavaScript>parent.f2.w("姓名","讲话内容","原始姓名","讲话工夫")</script>的格局输入到客户端,便可挪用chatfyq.htm中界说的w(un,sa,tn,dt)函数来显现动身言内容。
⑷chatsay.asp:讲话提交到此文件举行处置。此文件位于底部的埋没框架中。将讲话到场缓冲区后,当即实行和chatt.asp不异的代码段,将讲话显现出来。(chatsay.asp前面的代码和chatt.asp是不异的,之以是不在chatsay.asp前面利用Response.Redirect"chatt.asp"来挪用,是为了加速速率,由于重定向体例必要创建两次毗连:讲话提交是毗连一次,重定向时又要再毗连一次,效力低。)
2、部分关头代码正文:
⑴初始化代码段:Application("chat_hh")缓冲区中最初一句讲话的序号、Session("chat_hh")就是“计划思绪⑶”中提到的Session值,用于纪录客户端已显现的最初一句讲话的序号:
假如该序号为空,标明程序未初始化
IfApplication("chat_hh")=""Then
界说缓冲区数组,共30句讲话
每句讲话占用5个地位:序号、姓名、讲话内容、原始姓名、讲话工夫
Dimsd(150)
Application.Lock
将数组赋值给Application("chat_sd"),即:讲话只保存在服务器内存中
Application("chat_sd")=sd
界说初始序号为0
Application("chat_hh")=0
Application.UnLock
EndIf
为制止序号过年夜,每当序号增年夜到65535时就将序号复位为0
IfApplication("chat_hh")>65535Then
Application.Lock
Application("chat_hh")=0
Application.UnLock
EndIf
客户端用来纪录已显现到哪句讲话的Session("chat_hh")
其值即是序号减往12,即:新来的用户能够看到原本的12句讲话
Session("chat_hh")=Application("chat_hh")-12
⑵chatfyq.htm中的JavaScript函数:write():
functionwrite(){
//利用document.open()翻开对话显现区,翻开后不封闭,如许就能够不休向内里增加新内容
parent.f1.document.open();
//向对话显现区中写进HTML文件头
parent.f1.document.writeln("<html><head><title>对话区</title><metahttp-equiv=Content-Typecontent="text/html;charset=gb2312">");
//写进款式表界说
parent.f1.document.writeln("<styletype=text/css>.t{color:AAAAAA;font-size:9pt;}body{font-family:"宋体";font-size:10.5pt;line-height:160%}A{text-decoration:none}A:Hover{text-decoration:underline}A:visited{color:blue}</style></head><ScriptLanguage="JavaScript1.1">");
//写进主动滚屏代码
//......(注重:此处省略的代码请拜见完全的源程序)
parent.f1.document.writeln("StartUp();</script>");
parent.f1.document.writeln("<bodybgcolor=CDE0FCtext=000000>");
parent.f1.document.writeln("<hrsize=1>【接待到临】红蜻蜓谈天室恭候您的到临。<hrsize=1>");
//将chatt.asp载进框架顶真个埋没框架中,实行准时革新功效
parent.t.location.href="chatt.asp";
}
⑶chatt.asp准时革新,并获得最新的讲话的代码:
将谈天室的对话内容的缓存取到sd数组中
sd=Application("chat_sd")
获得最初显现的讲话的序号
userhh=Session("chat_hh")
界说show数组,用于寄存要显现的讲话内容
Dimshow()
ReDimPreserveshow(0)
j=1
newuserhh=0
遍历缓冲区的讲话内容
Fori=1To150Step5
newuserhh=sd(i)
假如sd(i)(每句讲话的序号)年夜于用户端最初讲话的序号且讲话存在就将其存进show数组
Ifsd(i)>userhhAndsd(i)>0Then
ReDimPreserveshow(j),show(j+1),show(j+2),show(j+3)
show(j)=sd(i+1)
show(j+1)=sd(i+2)
show(j+2)=sd(i+3)
show(j+3)=sd(i+4)
j=j+4
EndIf
Next
输入javascript到客户端
Response.Write"<scriptLanguage=JavaScript>"
输入show数组的内容
Fori=1ToUBound(show)Step4
输入parent.f2.w(show(i),show(i+1),show(i+2),show(i+3)),挪用客户端chatfyq.htm的w(un,sa,tn,dt)函数来显现讲话内容
Response.Write"parent.f2.w("&Chr(34)&show(i)&Chr(34)&","&Chr(34)&show(i+1)&Chr(34)&","&Chr(34)&show(i+2)&Chr(34)&","&Chr(34)&show(i+3)&Chr(34)&");&qu</p>Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。 Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点) ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 不能只是将它停留在纸上谈兵的程度上。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 那么,ASP.Net有哪些改进呢? ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
页:
[1]