发新话题
打印

使用ASP的APPLICATION对象

使用ASP的APPLICATION对象

前面一章讲了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")%>  

其他的代码不用我多说了吧!这只是一个简单聊天室的雏形,你需要发挥你的努
力才能做出出色的聊天室哦!

大家灌啊

TOP

发新话题