?? asp教程:global_asa文件的使用及chat程序.htm
字號:
action="chat.asp">< p><BR>< input type="text" name="nick"
size="20" value="nick" style="background-color: rgb(192,192,192)"><
br><BR> < input type="submit" value=" 進入聊天室 "
name="B1" style="color: rgb(255,255,0); font-size: 9pt; background-color:
rgb(0,128,128)"><BR>< p>< input type="hidden" name="log"
size="20" value="1">< br>< /p><BR><
/form><BR><BR>< %<BR>Response.End '
結束程序的處理<BR>Else<BR>Response.clear ' 清空緩存中的內容<BR>dim talk<BR>If
Request.Form("nick")<>"" then<BR>' 判斷客戶是是否在聊天界面中
<BR>Session("nick")=Request.Form("nick")<BR>End
If<BR>'------------------------'<BR>客戶聊天界面
<BR>'------------------------<BR>%><BR><BR>< form method="POST"
action="chat.asp" name=form1> < p>< %=Session("nick")%>
說話:< input type="text" name="talk" size="50">< br><BR><
input type="submit" value=" 提交 " name="B1"><BR>< input type="reset"
value=" 取消 " name="B2">< /p><BR>< /form><BR>< A
HREF="/asptest/shusheng/chat.asp"> 離開 < /a>< br><
br><BR><BR>< %<BR>If Request.Form("log")<>1 then<BR>If
trim(Request.Form("talk"))="" then<BR>' 判斷用戶是否沒有輸入任何內容
<BR>talk=Session("nick")&"
沉默是金。"<BR>Else<BR>talk=trim(Request.Form("talk"))<BR>' 去掉字符后的空格 <BR>End
If<BR><BR>Application.lock<BR>Application("show")="< table border='0'
cellpadding='0' cellspacing='0' width='85%' >< tr>< td
width='100%' bgcolor='#C0C0C0'>< /td>< /tr>< tr><
td width='100%'>< font color='#0000FF'> 來自
"&Request.ServerVariables("remote_addr")&" 的
"&Session("nick")&time&" 說:< /font>"&talk&"<
/td>< /tr>< tr>< td width='100%'
bgcolor='#C0C0C0'>< /td>< /tr>< /table><
br>"&Application("show")<BR>Application.UnLock<BR><BR>Response.Write
Application("show")<BR>End If<BR>End If<BR>%><BR><BR>
<P> 第一次運行 chat.asp 程序,你首先將看到如下頁面 : <BR><IMG height=68
alt="asp9a.gif (613 bytes)"
src="ASP教程:Global_asa文件的使用及Chat程序.files/asp9a.gif" width=166> </P>
<P> </P>
<P> 選擇你的 nick 進入聊天室后,將看到如下頁面 : <BR><IMG height=92
alt="asp9b.gif (1112 bytes)"
src="ASP教程:Global_asa文件的使用及Chat程序.files/asp9b.gif" width=478> </P>
<P> </P>
<P> 輸入你想要說的話,對話將出現在輸入框的下方,如下圖 : <BR><IMG height=218
alt="asp9c.gif (4190 bytes)"
src="ASP教程:Global_asa文件的使用及Chat程序.files/asp9c.gif" width=418> </P>
<P> 下面我們來對這個聊天室程序進行逐步的分析。 </P>
首先,由于聊天室的所有客戶都要能夠共享信息,所以不可避免的要用到具有應用程序級變量的對象 Application,這是建立 Chat
程序的關鍵所在,所有的談話數據都存放在一個應用程序級變量中,以便讓所有的客戶讀取。我們可以用所學過的 request
對象獲取客戶所輸入的談話,并保存在變量 talk 中 , 然后將 talk 的值存入應用程序級變量 show 中,如下 : <BR> < %
Application("show")=talk&Application("show") %><BR><BR>
接下來要考慮的是當不同的客戶同時向 Chat
應用程序進行操作的時候如何處理。這個問題其實與在數據庫中的兩個用戶同時寫入同一個記錄一樣,如果兩個用戶同時對同一個應用程序級變量進行寫操作,則一個用戶所作的修改會被另一個用戶的操作所覆蓋,所以,如果對
Application 對象數據的并發訪問不采取一定措施,則會導致當兩個用戶試圖同時對 Asp
聊天室應用程序提交時,一個用戶的提交內容會被另一個用戶的提交內容所覆蓋,在被參加到會話中的任何人看到之前就消失了。為了避免這類問題的出現,我們需要使用
Application 對象的 Lock 屬性來約束只允許當前的用戶編輯或增加 Application
對象的屬性,這樣當用戶開始修改應用程序級變量開始,到 Application 對象被顯式地 Unlocked 為止,Application
對象的屬性只能被該用戶編輯,如果此時有其他用戶請求編輯 Application 對象,則這些用戶要排隊等待,知道應用程序被 Unlock
為止。如下所示 :
<BR>Application.lock<BR>Application("show")=talk&Application("show")<BR>Application.UnLock<BR><BR>
現在整個程序的核心部分你已經了解了,下面考慮如何保存客戶信息,這里我們要用到一個會話級變量,即將客戶的 nick 保存在 Session 中。如:
<BR>Session("nick")=Request.Form("nick")<BR><BR> 最后,我們要考慮的是如何僅在一個 .asp
文件中處理各種事件 , 如 : 客戶登陸界面、客戶聊天界面。由于客戶第一次請求 .asp 文件時,采用的是簡單的 HTTP GET
方式,但是當客戶向頁面上的表單字段中增加的數據并向自身提交表單后,.asp 文件會再次被請求,不過這次數據是經過 HTTP POST
方式進行傳遞的。文件被請求的方式可以用兩種方法來確定。一是測試 Request.Form
集合是否包含成員,若沒有,則表明沒有發送給表單處理的數據。二是使用
Request.ServerVariables("Request_Method") 變量。如果表單是通過 HTTP GET
方式被請求的,則這個變量會返回“GET”,如果表單被提交處理則返回“POST”。由于后一種方法對于確定文件的請求方式更直接,所以我們使用如下代碼進行判斷
: <BR> if Request.ServerVariables("Request_Method")="GET" then<BR><BR>
由于我們設置了 ASP 緩存,所以當程序判斷頁面請求方式為 GET 時,程序運行 Response.End,來結束后面的所有操作,否則則運行
Response.clear, 清空緩存中已有的內容,并繼續程序的運行。這樣我們就得以用同一個 .asp
文件根據不同情況給客戶顯示不同的界面。<BR><BR> 好了,我已經將這個 ASP Chat
程序的核心部分告訴大家了,剩下的一些細節性問題請各位自己讀程序吧,其實這個程序還存在很多不足之處,最大的毛病是我沒有寫自動刷新的功能,因此如果你在
Chat 中不說話,那也就看不到其他客戶所說的話了。Chat 在 Internet 中的魅力大家是知道的,其實 , 用 ASP 也完全能做到同
irc 類似的強大功能,當然這就需要寫更多的代碼,如果大家有興趣請寫信給我,我將在今后的文章中逐步提升這個 chat
程序的等級,讓大家也過過“Oper”的隱。注:有了這個 chat 程序,你就可以用來在自己的 PWS 上建一個 chat 應用程序,只要將你的 IP
地址告訴朋友,如 http://202.96.210.33/asp/chat.asp,你們就可以通過你的電腦在網上聊天了,很爽的,不信你試試 !
<P align=center><A
href="http://chinese.pku.edu.cn/netstudy/aspteach/asp8.htm">上一節</A> <A
href="http://chinese.pku.edu.cn/netstudy/aspteach/asp10.htm">下一節</A></P>
<P align=center><A
href="http://chinese.pku.edu.cn/netstudy/aspteach/index.asp">在線教程首頁</A></P></TD></TR></TBODY></TABLE></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -