-
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中分別運行通過。
---- 一、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中分別運行通過。
最新更新
unittest的TestCase類提供的判斷方法
python基礎教程之unittest模塊(單元測試)
python基礎教程之Python的特點(優點和缺點
python基礎教程之Python是什么,Python簡介
python基礎教程之編譯型語言和解釋型語言
python基礎教程之編程語言是什么
python基礎教程之Python assert斷言函數及用法
python基礎教程之Python 文件 truncate() 方法
python基礎教程之Python 文件 write() 方法
python基礎教程之Python 文件 writelines() 方法
基于UDP的服務器端和客戶端
再談UDP和TCP
在socket編程中使用域名
網絡數據傳輸時的大小端問題
socket編程實現文件傳輸功能
如何優雅地斷開TCP連接?
圖解TCP四次握手斷開連接
詳細分析TCP數據的傳輸過程
圖解TCP數據報結構以及三次握手(非常詳
TCP協議的粘包問題(數據的無邊界性)
sql語句大全之Microsoft SQL Server 2012安裝說明
sql語句大全之隨機姓名生成方法
sql語句大全之SQL干貨筆記
access數據庫之隨說秋色園從Access升遷到
access數據庫之微信公眾平臺開發(26) ACCE
access數據庫之ACCESS TOKEN
access數據庫之當爬蟲被拒絕時(Access Deni
access數據庫之當爬蟲被拒絕時(Access Deni
access數據庫之使用PowerDesigner生成Access數據
access數據庫之讓ADO.NET Entity Framework 支持