|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
专业性的服务。有的ASP商提供垂直型的应用服务,针对某一特定行业提供应用服务。在上一篇中作者给人人具体先容了两个十分有用的ASP内建工具Application和Session的利用办法。因为这二者的OnStart、OnEnd事务的剧本都必需在Global.asa文件中声明,因而,本篇将给人人具体先容Global.asa文件的利用办法。为使人人纯熟把握至今所学过的常识,本篇还将举出一个ASP的Chat程序,供列位参考。 比来良多伴侣来信问我,为何前两期的典范程序运转时有如许那样的错。起首,我要向人人声明,这些程序都是我本人写的,在出“厂”前都经由及格查验,尽无“冒充伪劣产物”。:)因为程序中利用了cookie纪录客户信息,以是假如你在扫瞄器中没有设置承受cookie则程序将不克不及一般运转。别的,程序将客户信息纪录在客户真个cookie所利用的办法是Response.Cookie,此语句必需写在ASP文件中的第一个<HTML>标志前,这是由于Cookie是作为HTTP传输的头信息的一部分发送给客户的,假如当HTTP报头信息已传输给客户后再利用Response.Cookie,将呈现以下毛病:“HTTP题目已写进到客户扫瞄器。任何HTTP题目的修正必需在写进页内容之前。”,大概一些伴侣在剪贴程序的时分没有注重,打乱了程序的前后序次,大概是毛病的将HTML代码增加在ASP典范程序之前,因此招致程序运转堕落。因而,我倡议人人一方面在初次运转例程的时分不要对程序举行任何修改,只管在看懂程序的基本上慢慢改善,另外一方面在运转ASP程序时最少要在扫瞄器当选择可承受Cookie,不然一旦ASP程序中利用了Cookie或Session,它们都将没法一般运转。
上面我来向人人先容Global.asa文件的利用办法。
甚么是Global.asa文件?它实际上是一个可选文件,程序编写者能够在该文件中指定事务剧本,并声明具有会话和使用程序感化域的工具。该文件的内容不是用来给用户显现的,而是用来存储事务信息和由使用程序全局利用的工具。该文件的称号必需是Global.asa且必需寄存在使用程序的根目次中。每一个使用程序只能有一个Global.asa文件。
在Global.asa文件中,假如包括的剧本没有效<SCRIPT>标志封装,或界说的工具没有会话或使用程序感化域,则服务器将前往毛病。我们能够用任何撑持剧本的言语编写Global.asa文件中包括的剧本。假如多个事务利用统一种剧本言语,就能够将它们构造在一组<SCRIPT>标志中。
在Global.asa文件中声明的历程只能从一个或多个与Application_OnStart、Application_OnEnd、Session_OnStart和Session_OnEnd事务相干的剧本中挪用。在基于ASP的使用程序的ASP页中,它们是不成用的。假如要在使用程序之间共享历程,可在独自的文件中声明这些历程,然后利用服务器端包涵(SSI)语句将该文件包括在挪用该历程的ASP程序中。一般,包括文件的扩大名应为.inc。
上面是一个很尺度的Global.asa文件:
<SCRIPTLANGUAGE="VBScript"RUNAT="Server">
Session_OnStart当客户初次运转ASP使用程序中的任何一个页面时运转
Session_OnEnd当一个客户的会话超时或加入使用程序时运转
Application_OnStart当任何客户初次会见该使用程序的首页时运转
Application_OnEnd当该站点的WEB服务器封闭时运转
</SCRIPT>
<SCRIPTLANGUAGE="VBScript"RUNAT="Server">
SubApplication_OnStart
VisitorCountFilename=Server.MapPath("/ex2")+"VisitCount.txt"
SetFileObject=Server.CreateObject("Scripting.FileSystemObject")
SetOut=FileObject.OpenTextFile(VisitorCountFilename,1,FALSE,FALSE)
Application("visitors")=Out.ReadLine
Application("VisitorCountFilename")=VisitorCountFilename
EndSub
=========================================================
SUBApplication_OnEnd
SetFileOutObject=Server.CreateObject("Scripting.FileSystemObject")
SetOut=FileOutObject.CreateTextFile(Application("VisitorCountFilename"),TRUE,FALSE)
Out.WriteLine(application("visitors"))
EndSub
=========================================================SubSession_OnStart
Session.Timeout=5
Application("visitors")=Application("visitors")+1
Session("ID")=Session.SessionID
EndSub
</SCRIPT>
在这个Global.asa程序中,触及到了ASP的FileAccess组件,它能够供应用于会见文件体系的办法、属性和汇合。这将在今后ASP的组件中举行睁开会商。在这里,它起到了在服务器上创立新文件并对文件举行写操纵的感化。这实际上是一个ASP页面会见记数器使用程序的Global文件,起首当客户初次会见该使用程序的首页时,历程Application_OnStart界说了在服务器上指定的假造目次下新建一个VisitCount.txt的文本文件,并将文件的路径和内容保留在使用程序级的变量中。而当任何一个客户会见ASP使用程序中的任何一个页面时,历程Session_OnStart界说将使用程序级的变量visitors的值主动加一。如许,每当有客户会见页面时,变量visitors都将主动加一,以起到统计点击率的感化。因为变量visitors的值是存储在体系内存当中,以是假如服务器封闭或从头启动,存储在变量中的数据将主动丧失,以是经由过程界说历程Application_OnEnd,在服务器封闭或重启之前将数据写进事前创建的文本文件当中,如许就可以确保当服务器再次启动时,Application_OnStart历程能够从VisitCount.txt文件中读取之前的统计数。
经由这段工夫的进修,信任人人已可以对照纯熟的使用我们所学过的这些ASP内建工具来编写一些较复杂的ASP使用程序,可别小视你如今所把握的这些ASP基础常识哦!实在你已可以开辟一些复杂但有用的ASP使用程序了。上面我就举一个十分复杂的ASPWEB谈天室程序,你会觉察写谈天室本来是一件这么简单、轻松的事。大概伴侣们已在一些杂志上看到过ASP谈天程序的编写办法,但作者在这里本人写了一个更复杂的程序,仅仅利用了一个.asp文件。请将以下代码剪贴到记事簿并保留为chat.asp。
<%@Language=VBScript%>
<%
Response.Buffer=true设置输入缓存,用于显现分歧页面。
Onerrorresumenext疏忽程序堕落部分
IfRequest.ServerVariables("Request_Method")="GET"then
判别客户是以甚么体例哀求WEB页面
------------------------
客户上岸界面
------------------------
%>
<formmethod="POST"action="chat.asp"><p>
<inputtype="text"name="nick"size="20"value="nick"style="background-color:rgb(192,192,192)"><br>
<inputtype="submit"value="进进谈天室"name="B1"style="color:rgb(255,255,0);font-size:9pt;background-color:rgb(0,128,128)">
<p><inputtype="hidden"name="log"size="20"value="1"><br></p>
</form>
<%
Response.End停止程序的处置
Else
Response.clear清空缓存中的内容
dimtalk
IfRequest.Form("nick")""then
判别客户是是不是在谈天界面中
Session("nick")=Request.Form("nick")
EndIf
------------------------
客户谈天界面
------------------------
%>
<formmethod="POST"action="chat.asp"name=form1><p><%=Session("nick")%>措辞:<inputtype="text"name="talk"size="50"><br>
<inputtype="submit"value="提交"name="B1">
<inputtype="reset"value="作废"name="B2"></p>
</form>
<AHREF="/asptest/shusheng/chat.asp">分开</a><br><br>
<%
IfRequest.Form("log")1then
Iftrim(Request.Form("talk"))=""then
判别用户是不是没有输出任何内容
talk=Session("nick")&"缄默是金。"
Else
talk=trim(Request.Form("talk"))
往失落字符后的空格
EndIf
Application.lock
Application("show")="<tableborder=0cellpadding=0cellspacing=0width=85%><tr><tdwidth=100%bgcolor=#C0C0C0></td></tr><tr><tdwidth=100%><fontcolor=#0000FF>来自"&Request.ServerVariables("remote_addr")&"的"&Session("nick")&time&"说:</font>"&talk&"</td></tr><tr><tdwidth=100%bgcolor=#C0C0C0></td></tr></table><br>"&Application("show")
Application.UnLock
Response.WriteApplication("show")
EndIf
EndIf
%>
第一次运转chat.asp程序,你起首将看到以下页面:
选择你的nick进进谈天室后,将看到以下页面:
输出你想要说的话,对话将呈现在输出框的下方,以下图:
上面我们来对这个谈天室程序举行慢慢的剖析。
起首,因为谈天室的一切客户都要可以共享信息,以是不成制止的要用到具有使用程序级变量的工具Application,这是创建Chat程序的关头地点,一切的发言数据都寄存在一个使用程序级变量中,以便让一切的客户读取。我们能够用所学过的request工具猎取客户所输出的发言,并保留在变量talk中,然后将talk的值存进使用程序级变量show中,以下:
<%Application("show")=talk&Application("show")%>
接上去要思索的是当分歧的客户同时向Chat使用程序举行操纵的时分怎样处置。这个成绩实在与在数据库中的两个用户同时写进统一个纪录一样,假如两个用户同时对统一个使用程序级变量举行写操纵,则一个用户所作的修正会被另外一个用户的操纵所掩盖,以是,假如对Appliation工具数据的并发会见不接纳必定措施,则会招致当两个用户试图同时对Asp谈天室使用程序提交时,一个用户的提交内容会被另外一个用户的提交内容所掩盖,在被列入到会话中的任何人看到之前就消散了。为了不这类成绩的呈现,我们必要利用Application工具的Lock属性来束缚只同意以后的用户编纂或增添Application工具的属性,如许当用户入手下手修正使用程序级变量入手下手,到Application工具被显式地Unlocked为止,Application工具的属性只能被该用户编纂,假如此时有其他用户哀求编纂Application工具,则这些用户要列队守候,晓得使用程序被Unlock为止。以下所示:
Application.lock
Application("show")=talk&Application("show")
Application.UnLock
如今全部程序的中心部分你已懂得了,上面思索怎样保留客户信息,这里我们要用到一个会话级变量,行将客户的nick保留在Session中。如:
Session("nick")=Request.Form("nick")
最初,我们要思索的是怎样仅在一个.asp文件中处置各类事务,如:客户上岸界面、客户谈天界面。因为客户第一次哀求.asp文件时,接纳的是复杂的HTTPGET体例,可是当客户向页面上的表单字段中增添的数据并向本身提交表单后,.asp文件会再次被哀求,不外此次数据是经由HTTPPOST体例举行传送的。文件被哀求的体例能够用两种办法来断定。一是测试Request.Form汇合是不是包括成员,若没有,则标明没有发送给表单处置的数据。二是利用Request.ServerVariables("Request_Method")变量。假如表单是经由过程HTTPGET体例被哀求的,则这个变量会前往“GET”,假如表单被提交处置则前往“POST”。因为后一种办法关于断定文件的哀求体例更间接,以是我们利用以下代码举行判别:
ifRequest.ServerVariables("Request_Method")="GET"then
因为我们设置了ASP缓存,以是当程序判别页面哀求体例为GET时,程序运转Response.End,来停止前面的一切操纵,不然则运转Response.clear,清空缓存中已有的内容,并持续程序的运转。如许我们就得以用统一个.asp文件依据分歧情形给客户显现分歧的界面。
好了,我已将这个ASPChat程序的中心部分告知人人了,剩下的一些细节性成绩请列位本人读程序吧,实在这个程序还存在良多不敷的地方,最年夜的偏差是我没有写主动革新的功效,因而假如你在Chat中不措辞,那也就看不到其他客户所说的话了。Chat在Internet中的魅力人人是晓得的,实在,用ASP也完整能做到同irc相似的壮大功效,固然这就必要写更多的代码,假如人人有乐趣请写信给我,我将在从此的文章中慢慢提拔这个chat程序的品级,让人人也过过“Oper”的隐。注:有了这个chat程序,你就能够用来在本人的PWS上建一个chat使用程序,只需将你的IP地点告知伴侣,如http://202.96.210.33/asp/chat.asp,你们就能够经由过程你的电脑在网上谈天了,很爽的,不信你尝尝!
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时. |
|