VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
魔兽世界wow > 網站開發 > ASPnet >
  • asp.net教程之用ASP建造自己的聊天室

  • 2017-06-11 20:10 來源:未知
 聊天室想必你一定去過吧,但想不想建立自己的聊天室呢?其實這一點都不難,Active Server Script提供了Application對象和Session對象,Application對象代表了一個Active Server應用程序,也就是一個Web網頁,Session對象則表示一個用戶,代表一個用戶對這個頁面的一次訪問,通過Application對象可以讓訪問它的所有用戶共享信息,并可以在Web服務器運行期間持久地保存數據,而Session對象也可以在用戶的一次訪問期間持久地保持數據,利用這兩個對象,就可以十分方便地建造自己的Chat應用程序。 
---- 一、Application對象: 

---- 1.屬性:Application對象沒有內置的屬性,但用戶可以定義自己的屬性: 

---- Application(“屬性名稱”)=值,一旦分配了屬性,它就會一直存在,直到Web服務器關閉服務,而且它能被所有用戶讀取,所以可以用它在用戶之間發送談話內容。 

---- 2.方法:當兩個用戶同時對Application屬性的值進行寫入操作時,會出現一方的修改被另一方的操作直接覆蓋掉的情況,為了避免這種現象,用戶可以調用Lock方法進行鎖定,這樣只有當前用戶才能夠對Application的屬性進行操作,用戶完成操作后調用Unlock方法解鎖,使得其他用戶也可以修改Application的屬性。 

---- 3.事件:創建Active Server應用程序需要在Web服務器上存放應用程序的虛擬主目錄下創建Global.asa文件,它含有Application對象和Session對象的事件處理例程,通常,Application_Onstart事件用來定義應用級的屬性。 

---- 二、創建一個Chat應用程序:程序運行時如下圖所示(略) 

---- 1.設置應用程序的變量:這里需建立兩個應用程序級的變量,gchars數組用來存放用戶的談話內容,gcounter用做計數器,控制頁面的顯示行數,在這里我們讓頁面最多顯示最近的10行談話內容。當應用程序啟動時這些變量必須進行初始化,所以它們的創建都要在Global.asa文件中的Application_onstart事件中: 



    < script language="vbscript" runat="server" >
sub application_onstart()
dim lchars(10)
application("gchars")=lchars
application("gcounter")=0
end sub
< /script >

---- 2.確定處理ASP的方式:當用戶第一次請求這個ASP文件時,用的是GET方法,然后,當用戶輸入完談話內容后提交時用的是POST方法,在這里表單是向自身提交的,所以這個ASP文件會被再次請求,我們通過測試Request . ServerVariales(“Request_Method”)變量來確定文件被請求的方式:IF Request . ServerVariales(“Request_Method”)=“POST” then 

---- 3.確定講話者:當用戶第一次提交談話內容時需輸入自己的姓名,一旦在txtname框中輸入數據后,程序將建立一個會話級變量來存放用戶姓名,并自動顯示在txtname框中,用戶就不需再次輸入了,除非你想用另一個名字加入會談。 



    IF len(request(“txtname”)) >0 then
Session(“ssname”)=request(“txtname”)
End if
< h5 >您的姓名:
< input type=“type” name=“txtname”
length=“20” value=< %=session(“ssname”)% > >

---- 

---- 4.處理用戶的談話內容:首先要確定已經為Chat寫入的談話行數,為方便閱讀,在這里將顯示行數限定為10行,如果Application(“gcounter”)大于9,則將其置為0,然后將談話者姓名和內容一起存放到Application(“gchars”)數組中: 



Application(“gchars”)
(Application(“gcounter”))=Session(“ssname”) &
“:” & request(txttalk)

然后將計數器加1:Application(“gcounter”) =Application(“gcounter”)+1 

---- 5.將數組內容寫入到客戶的瀏覽器中:用戶提交談話內容后,程序必須將數組內容寫到客戶的瀏覽器中,讓聊天室中的所有人都能看到被提交的談話內容: 



    if application("gcounter")=0 then
lstemp=application("gchars")(0)
else
for x=0 to application("gcounter")-1
lstemp=lstemp & "< br >" & application("gchars")(x)
next
end if

---- 最后,用Response.write方法將lstemp變量的值寫到客戶的瀏覽器中去: 



response.write lstemp

---- 下面給出Default.asp的完整代碼: 



< %response.expires=0
response.buffer=true% >
< html >< head >< title >Chat sample< /title >< /head >
< body >< center >
< h3 >我的聊天室< /h3 >< /center >< hr >
< % if request.servervariables("request_method")="POST" then
if len(request("txtname")) >0 then
session("ssname")=request("txtname")
end if
application.lock
mcounter=application("gcounter")
mchars=application("gchars")
if mcounter >9 then
mcounter=0
end if
mchars(mcounter)=session("ssname")
& ":" & request("txttalk")
mcounter=mcounter+1
application("gcounter")=mcounter
application("gchars")=mchars
application.unlock
end if % >
< % if application("gcounter")=0 then
lstemp=application("gchars")(0)
else
for x=0 to application("gcounter")-1
lstemp=lstemp & "< br >" & application("gchars")(x)
next
end if
response.write lstemp % >
< hr >< center >
< form action="default.asp" method=post name="aspform" >
< b >< a href="default.asp" >
更新顯示< /a >< /b >
< h5 >發言:
< input type="text" name="txttalk" size="70" >< br >
< h5 >您的姓名:
< input type="text" name="txtname" length="20"
value=< %=session("ssname")% > >
< input type="submit" name="cmdpost" default="true" value="發送" >
< /form >< /center >< /body >< /html >

---- 以上代碼在NT4.0、IIS4.0、IE4.0中和Pwin98、PWS、IE4.0中分別運行通過。
相關教程