前面一章讲了SESSION的用法,其实,APPLICATION的用法与SESSION差不多,主要
的区别是不同的用户可以共享同一个APPLICATION变量,其实,使用APPLICATION
对我们开发程序中,起到了非常重要的作用。
还没想到有什么作用吧。来,我们先看一个例子”多人聊天室“。 现在我们所做
的例子使用APPLICATION对象来实现的。 (由于环境所限制,测试不能在这里进
行,请你把源代码放到你的机器进行测试,请体谅!)
global.asa 下载该源代码
< SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub Application_OnStart
application("Msg1"

=""
application("Msg2"

=""
application("Msg3"

=""
application("Msg4")=""
application("Msg5")=""
application("SessionNo")=0
end sub
sub Application_OnEnd
end sub
Sub Session_OnStart
Application.Lock
Application("SessionNo")=Application("SessionNo")+1
Application.UnLock End Sub sub Session_OnEnd
Application.Lock
Application("SessionNo")=Application("SessionNo")-1
Application.UnLock
end sub
< /SCRIPT>
chat.asp
< %@ Language=VBScript %>
< HTML>
< HEAD>
< META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
< /HEAD>
< BODY>
< FORM METHOD=POST>
< % if Session("name")="" Then%>
名字:< INPUT NAME="name" Size=10> < BR>
< % end if%>
说话:< Input name="chat" size=30> < input type=submit value="
发送"> < HR>
共有< %=Application("SessionNo")%> 在线< BR> < BR>
< % if Request.Form("name")< > "" then Session("name")=Request
.Form("name") end if
if Request.Form("chat")< > "" then
Application("Msg5")=Application("Msg4")
Application("Msg4")=Application("Msg3")
Application("Msg3")=Application("Msg2")
Application("Msg2")=Application("Msg1")
Application("Msg1")="< BR> " +Session("name")+"< /B> :"+Re
quest.Form("chat") end if %>
< %=Application("Msg1")%>
< %=Application("Msg2")%>
< %=Application("Msg3")%>
< %=Application("Msg4")%>
< %=Application("Msg5")%>
< /BODY>
< /HTML>
当你启动一个浏览器浏览该页时,在线人数加一,在线人数的累加是通过以下的
代码实现的。 Sub Session_OnStart Application.Lock Application("Session
No")=Application("SessionNo")+1 Application.UnLock End Sub 每当你启动一
次浏览器(当然需要浏览该页了),WEB SERVER 就自动执行 Session_OnStart
事件 当用户超时(前面已经讲过了 SESSION)或执行 Abandon 时,便执行 Ses
sion_OnEnd 事件。
而为什么要执行Application.lock 该语句呢?由于WEB 上许多人在共享该变量,
当用LOCK锁起 来时,其他的用户就不能使用,非得该用户完成 Application("S
essionNo")=Application("SessionNo")+1 和 Application.UnLock ,其他用户
才能使用该变量。这样做是为了多人访问时,不至于变量之间 的冲突。当一个S
ESSION结束时,在线人数减一,就是通过以下代码实现: sub Session_OnEnd A
pplication.Lock Application("SessionNo")=Application("SessionNo")-1 Ap
plication.UnLock end sub 现在明白了如何统计在线人数吧(当然还有许多种方
法可以实现) if Request.Form("name")< > "" then Session("name")=Reques
t.Form("name") end if 而以上的这段代码是当你输入名称后,把你的名称放到
Session("name") 中存储,以后就可以通过 使用该变量来显示不用用户的名称
了。 以下的代码就是存放每个人所说的话的:
if Request.Form("chat")< > "" then
Application("Msg5")=Application("Msg4")
Application("Msg4")=Application("Msg3")
Application("Msg3")=Application("Msg2")
Application("Msg2")=Application("Msg1")
Application("Msg1")="< BR> " +Session("name")+"< /B> :"+Request.Fo
rm("chat")
end if
由于每个用户所说的话存放到APPLICATION对象中,必须通过以下的语句显示出来
:
< %=Application("Msg1")%>
< %=Application("Msg2")%>
< %=Application("Msg3")%>
< %=Application("Msg4")%>
< %=Application("Msg5")%>
其他的代码不用我多说了吧!这只是一个简单聊天室的雏形,你需要发挥你的努
力才能做出出色的聊天室哦!