999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于.NET內置對象的在線人數統計

2010-01-01 00:00:00馮翔宇
考試周刊 2010年5期

摘 要: ASP.NET具有七大內置對象, 用ASP. NET編寫虛擬社區、網上購物等B/S程序時,Application和Session對象具有舉足輕重的作用,能夠靈活合理地運用這兩個對象是提高程序質量的關鍵。

關鍵詞: .NET 內置對象 在線人數統計

一、關鍵對象分析

我們可以把Application看成一個用于存儲全局變量的容器,實際它只是一個對象,而ASP.NET應用程序里面的變量,也就是容器里面的內容。ASP.NET應用程序是單個Web服務器上某一個虛擬目錄及其子目錄范圍內所有文件、頁、處理程序、模塊、代碼的總和。可以在整個應用程序范圍之內存儲一些信息,我們可以用變量來存儲。但需要注意的是,變量的整個生命周期受限制于網頁,即每一次ASP.NET文件被執行完畢(Web服務器端發送代碼到客戶端后),變量的內容便被釋放。很多時候,我們又需要保留這個內容,比如論壇系統,每次刷新后,頁面的內容仍然要存在,這就需要Application來存儲。利用Application對象存儲的變量及對象在整個應用程序內執行的所有ASP.NET頁面都是可用的。Application中存儲的是全局變量,這些變量占用了系統較多的內存資源,在這個變量沒有被替代之前,所占用的資源是不會被釋放的。

Session對象和Application有很大不同。Application對象存儲信息是整個應用程序所共享的全局信息,每一個客戶都能夠訪問到的相同信息,針對整個應用程序,并且整個程序里的每一個用戶。Session對象的作用是在服務器端存儲特定局部的的信息,是針對特定的一個用戶,Session中的信息也叫做會話狀態。我們用一個例子來說明Session的使用。比如設計一個論壇。我們進入論壇,提交用戶名和密碼后,發帖子、留言等都不需要再用用戶名和密碼了,這是因為已經保留了注冊信息。我們登陸成功后,該系統已經把用戶名和密碼等存放進了Session對象,然后把信息返回到服務器,當轉到下一個頁面時,再從服務器取出信息來使用。我們留言或者發帖子的時候,就從 Web服務器的Session中取出用戶名和密碼來判斷我們是否有權利這么做。

ASP.NET的Application和Session對象,體現了其他ASP.NET內置對象所沒有的特征,即事件。每一個用戶訪問服務器時都會觸發一個OnStart事件,每個訪客的會話結束時都會觸發一個OnEnd事件。OnStart和OnEnd這兩個事件一般應用于虛擬社區中統計在線人數、修改用戶的在線離線狀態等。要具體定義這兩個事件,需要將代碼寫在Global.asa文件,并將該文件放在站點的根目錄下(缺省是\\Inetpub\\wwwroot\\)。另外,Application和Session對象規定了在OnEnd事件里除了Application對象外其他ASP內置對象(Response、Request、Server、Session……)一概不能使用。以下舉一個虛擬社區統計在線人數的例子來說明如何使用這兩個事件。

二、具體實現方法

在本例中,用application[\"online\"]變量記錄已經登錄社區的在線人數,因為一旦有用戶訪問服務器而不論用戶是否登錄,都會產生OnStart事件,所以不能在OnStart事件里使Application[\"online\"]加一。因為不論是否是登錄用戶的會話結束都會產生OnEnd事件(假如有訪客訪問了服務器但并不登錄社區,他的會話結束后也會產生OnEnd事件),所以在Session_OnEnd事件里用了if語句來判斷是否為已登錄用戶的OnEnd事件,如果是才將在線人數減一。

1.Global文件部分代碼

void Application_Start(object sender, EventArgse)

{

Application[\"total\"] = 0;//總人數

Application[\"online\"] = 0;//在線人數

//在應用程序啟動時運行的代碼

}

void Session_Start(object sender, EventArgse)

{

Session.Timeout = 1;

Application.Lock();//防止并發

Application[\"total\"]=(int)Application[\"total\"]+1;

Application[\"online\"]=(int)Application[\"online\"]+1;

Application.UnLock();

}

void Session_End(object sender, EventArgse)

{

Session.Timeout = 1;

Application.Lock();

Application[\"online\"] = (int)Application[\"online\"] -1;

Application.UnLock();

}

2.CS文件部分代碼

protected void Page_Load(object sender, EventArgse)

{

this.l2.Text = Application[\"online\"].ToString();

this.l4.Text = Application[\"total\"].ToString();

}

至此,關鍵的代碼已經完成了。在Application和Session的OnEnd事件里不能使用Server對象,所以要將數據庫的連接及數據庫在服務器上的物理地址(d:\\inetpub\\wwwroot\\bbs.mdb)存儲在application變量中,并在Application_OnStart事件中預先處理。同理,在Session_OnEnd事件中不能用session[\"pass\"]來代替session.contents[\"pass\"]。

這只是一個統計在線人數的簡單例子,對于一個完整的虛擬社區來說,僅僅統計有多少人在線是不夠的,在本例中數據庫里有個online字段是用來記錄用戶的在線狀態,用戶登錄的時候,在login.asp里將online設為1,但用戶離線時并沒有將online設為0,要完善它,就要修改一下Session_OnEnd事件,在該事件里將online設為0。

主站蜘蛛池模板: 亚洲综合第一页| 久久这里只有精品8| 久久香蕉国产线看精品| 波多野结衣一二三| 国产精品污污在线观看网站| 久久国产高潮流白浆免费观看| 免费无码在线观看| 亚洲成人高清无码| 色综合成人| 中文字幕无码制服中字| 久久人妻系列无码一区| 欧美一级专区免费大片| 91娇喘视频| av一区二区人妻无码| 高清欧美性猛交XXXX黑人猛交| 日本欧美一二三区色视频| 人妻21p大胆| 国产成人91精品免费网址在线| 亚洲人网站| jizz国产在线| 亚洲有码在线播放| 欧美午夜视频| 青草视频网站在线观看| 内射人妻无码色AV天堂| 欧美成人区| 成人亚洲视频| 久久综合激情网| 亚洲一欧洲中文字幕在线| 日韩精品资源| 欧洲日本亚洲中文字幕| 在线欧美a| AV色爱天堂网| 亚洲人妖在线| 麻豆国产精品| 一级高清毛片免费a级高清毛片| 在线a网站| 福利一区在线| a欧美在线| 一级成人a做片免费| 亚洲国产日韩视频观看| 麻豆国产原创视频在线播放| 综合亚洲网| 国产视频自拍一区| 青青青伊人色综合久久| 亚洲综合第一页| 亚洲床戏一区| 妇女自拍偷自拍亚洲精品| 久久99精品久久久大学生| 亚洲国产91人成在线| 成人精品亚洲| 男人天堂亚洲天堂| 日韩视频免费| 日本一区高清| 久久人搡人人玩人妻精品一| 国产精品人成在线播放| 国产乱肥老妇精品视频| аⅴ资源中文在线天堂| 国内丰满少妇猛烈精品播| 国产色婷婷| 女人18毛片一级毛片在线 | 国内精品伊人久久久久7777人| 一区二区午夜| 四虎永久在线| 国产午夜福利在线小视频| 97精品伊人久久大香线蕉| 97在线碰| 免费人成黄页在线观看国产| 91无码视频在线观看| 国产香蕉97碰碰视频VA碰碰看| 99视频在线免费观看| 91区国产福利在线观看午夜 | 午夜限制老子影院888| 人妻丰满熟妇av五码区| 乱人伦视频中文字幕在线| 国产精品人莉莉成在线播放| 欧美亚洲一二三区| 99人妻碰碰碰久久久久禁片| 中文成人在线| 日韩二区三区无| 三级毛片在线播放| 国产 日韩 欧美 第二页| 极品国产一区二区三区|