用ASP建造自己的聊天室

來源:互聯網
上載者:User
聊天室|聊天室 聊天室想必你一定去過吧,但想不想建立自己的聊天室呢?其實這一點都不難,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中



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.