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

利用ASP.NET制作網站訪問計數器

2008-12-31 00:00:00劉笑迎
電腦知識與技術 2008年25期

摘要:該文通過程序實例,詳細介紹了在ASP.NET中實現圖形化網站訪問計數器的方法。

關鍵詞:ASP. NET;網站;計數器

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)25-1451-03

Design the Website Access Counter in ASP.NET

LIU Xiao-ying, ZHANG Hui

(Department of Information Engineering, Yellow River Conservancy Technical Institute, Kaifeng 475003, China)

Abstracts: Analyzing many examples of program, the paper introduces the methods how to design the website visitor(access) counter of graphics in ASP.NET.

Key words: ASP.NET; website; counter

1 引言

當我們的動態網站發布到網上后,怎樣得知它的受歡迎程度呢?一個最常用的指標就是網站的訪問次數,網站訪客計數器就是對網站的訪問次數進行統計。因此,實現一個美觀大方又有個性的計數器是大多數網站管理員的所求。利用ASP.NET技術來實現網站訪問計數器簡單方便,其原理也容易被理解,同時計數結果還可以使用漂亮的圖片顯示在主頁上呈現給訪問用戶。

2 設計構思

計數器的核心工作就是想辦法將訪問的次數記錄下來,并且能夠方便的讀出數據記錄。利用ASP.NET技術實現網站訪問計數器,其基本思路如下:當用戶從客戶端訪問網站時,通過讀取服務器硬盤上相應的計數文件,并對計數器文件的數據進行加1操作,把當前的計數值在客戶端進行顯示,然后寫回該計數文件。

在此應用中,要建立三個文件,一個Default.aspx,主要用于顯示訪問次數,一個count.txt文件用于存儲訪問次數。還有Global.asax,這個文件是核心文件,主要負責響應事件和讀寫文件。下面注重分析Global.asax文件。

2.1 Global.asax文件

Global.asax文件也稱為ASP.NET應用程序文件,它一般被放在應用程序根目錄下。此文件中的代碼不產生用戶界面,也不響應單個頁面的請求。它主要是負責處理Application_Start,Application_End,Session_Start和Session_End等事件。

2.2 Application對象及其事件

Application 對象來自HttpApplictionStat 類。它可以在多個請求、連接之間共享公用信息,也可以在各個請求連接之間充當信息傳遞的管道。此對象的生命周期起于IIS開始運行并且有人開始連接時,終止于IIS關閉或者若干時間內無人連接(默認為20分鐘)。當Application 對象的生命周期開始時,Application_Start 事件會被啟動,當Application對象的生命周期結束時Application_End 事件會被啟動。

2.3 Session對象及其事件

Session對象有著與Application類似的事件:Session_Start和Session_End事件。當有一個新用戶訪問應用程序時,就會立刻觸發Session_Start事件。當某個用戶停止了訪問或者程序執行了Session.Abandon方法,就會觸發Session_End事件。

3 網站訪客計數器的具體實現方法

在asp.net中實現網站訪問計數器。需要解決的關鍵問題是使用什么樣的變量充當計數變量,變量的累加操作在什么事件中進行,以及計數結果如何以圖形化的方式顯示。下面結合一個具體的網站訪問計數器實例詳細說明。

3.1 創建文本文件,保存訪客次數

任何變量都有生命周期,當Web服務器重啟時,計數變量將重新初始化。因此需要建立文本文件count.txt將計數的結果保存下來。

count.txt文件要想被asp.net應用程序讀寫,需要在文件的安全屬性中添加aspnet用戶,并設置該用戶訪問count.txt的權限為可寫。 具體做法:

打開count.txt的屬性頁,選擇“安全”選項卡,單擊“添加”按鈕,添加asp.net用戶,并在權限中選擇讀取和寫入,如圖1所示。

3.2 定義計數變量

3.2.1 確定計數變量類型

定義計數變量的關鍵是要確定變量的類型。通過分析可以得出,用于計數的變量有一個特點,就是所有訪問網站的用戶都可以讀取和修改它。在Asp.net中,只有 Application變量符合以上特點。

因此,我們聲明一個變量Application[“count”]作為計數變量。

3.2.2 計數變量讀取count.txt初始化

運用Server.MapPath(“count.txt”)方法得到count.txt文件的路徑,運用file類的OpenText方法創建一個StreamReader對象,并將返回的對象賦值給mySR, 然后運用StreamReader類的ReadLine方法讀取文件內容,最后,將讀到的數值賦給Application[\"count\"]。

3.2.3 將程序代碼寫入Application_star事件

如果頻繁地進行文件的讀寫,是必要影響程序的運行速度。因此,我們可以將讀文件的操作放置在Application_star事件當中。該事件在整個ASP.NET應用程序第一次被觸發的事件,也就是說在一個虛擬目錄中第一個ASP.NET應用程序執行時觸發。之后,在應用程序關閉之前,該事件將不再觸發。我們將讀文件的操作寫入該事件中,在整個應用程序運行其間,該操作只進行一次。

具體代碼如下:

protected void Application_Start(Object sender, EventArgs e)

{

int count=0;

StreamReader mySR;

string myFilePath=Server.MapPath (\"count.txt\");

mySR=File.OpenText (myFilePath);

while(mySR.Peek ()!=-1)

{

string str=mySR.ReadLine ();

count=Int32.Parse (str);

}

Application[\"count\"]=count;

mySR.Close ();

}

3.3 當每一個用戶訪問網站內的網頁時,計數變量累加

由于application[“count”] 變量是所有用戶共享的,為了避免修改時出現爭用、死鎖或訪問沖突,在對Application變量進行修改時,必須先將其鎖定,修改完之后進行解鎖。

下面關鍵是要確定計數變量累加的代碼寫在什么事件中。

當每個用戶從客戶端瀏覽器中首次與網站建立連接時(首次訪問網站中的任意一個網頁),他就與這個服務器建立了一個Session(會話),服務器會為其創建一個Session對象。同時觸發Session_Start事件。

Session對象有一個有效期,默認為20分鐘。有時候使用者正在瀏覽網頁時,突然去做其他的事情而沒有把網頁關閉;如果 服務器一直浪費資源在管理這些Session 上,那么勢必會讓服務器的效率降低。所以當使用者超過一段時間沒有動作時,我們就可以將Session釋放。這個時間就是Session的有效期。

此后,只要用戶在同一瀏覽器中訪問網站中任意網頁,或者在Session有效期內刷新網頁時,該事件不再觸發。我們將累加代碼寫在Session_star事件中,將能夠實現:

1) 訪客首次瀏覽網站中的任意一個網頁時計數器加1,默認時間內訪問其他網頁或者刷新頁面,計數器將不會累加。

2) 訪客超過默認時間后再次訪問網站或者刷新網頁,訪問人數將加一。

本步驟的具體代碼如下:

protected void Session_Start(Object sender, EventArgs e)

{

Application.Lock ();--加鎖

count=(int)Application[\"count\"];

count=count+1;

object obj=count;

Application[\"count\"]=obj;

Application.unlock();--解鎖

}

3.4 以圖形模式顯示訪客數值

我們需要將訪客數值顯示在頁面上,為了增加網頁的趣味性,可以用圖片顯示數字。為此,首先要準備0-9的GIF圖形文件:0.gif、1.gif、2.gif...9.gif,分別用來顯示10個數字,然后利用循環,一一取出計數變量中的數字字符,再將字符映射到GIF圖形文件,使用Response對象的Write方法,將其顯示在網頁上。程序代碼放在Default.aspx程序中的Page_Load事件中。

protected void Page_Load(object sender, System.EventArgs e)

{

int i;

string strCounter=Application[“count”].ToString();

string imgName;

Response.Write(\"您是第\");

for( i = 0 ; i

{

imgName = strCounter.Substring(i,1);

Response.Write(\"\");

}

Response.Write(\"位訪問者\");

}

3.5 將Application[“count”]中的數值寫入count.txt文件

最后,運用StreamWrite類的WriteLine方法將最終的Application[\"count\"]的值寫入count.txt文件。該事件代碼可放在Application_End事件中。具體代碼如下:

protected void Application_End(Object sender, EventArgs e)

{

int count=0;

count=(int)Application[\"count\"];

//將數據記錄寫入文件

string myFilePath=Server.MapPath (\"count.txt\");

StreamWriter mySW=new StreamWriter(myFilePath,1);

mySW.WriteLine(count);

mySW.Close ();}

3.6 運行結果

計數器制作完畢后,通過瀏覽器調用可以得到如圖2所示的結果。

圖2

4 結束語

以上程序使用VC#編寫,在VS.NET 2005環境下調試通過,希望能給對ASP.NET編程有興趣的朋友一些啟發。

參考文獻:

[1] 王華章. ASP.NET 2.0網絡系統開發使用教程[M].北京:中國鐵道出版社,2006.

主站蜘蛛池模板: 国产一级二级三级毛片| 九九久久精品免费观看| 色综合网址| 一级毛片a女人刺激视频免费| 日本尹人综合香蕉在线观看| 夜夜操天天摸| 沈阳少妇高潮在线| 狠狠操夜夜爽| 国产Av无码精品色午夜| 手机精品视频在线观看免费| 亚洲无线一二三四区男男| 国产精品视频免费网站| 国内熟女少妇一线天| 激情六月丁香婷婷四房播| 久久久久国产精品熟女影院| 高清视频一区| 亚洲香蕉在线| 欧美性猛交xxxx乱大交极品| 免费在线a视频| 久久精品丝袜高跟鞋| 国产黄在线免费观看| 中文天堂在线视频| 2020最新国产精品视频| 东京热高清无码精品| 伊人久久婷婷| 国产小视频在线高清播放| 国产在线麻豆波多野结衣| 国产成人艳妇AA视频在线| 精品少妇三级亚洲| 婷婷午夜影院| 91小视频在线| 国产亚洲成AⅤ人片在线观看| 亚洲精品午夜无码电影网| 日本爱爱精品一区二区| 福利一区三区| 亚洲综合天堂网| 欧美伊人色综合久久天天| 韩国自拍偷自拍亚洲精品| 97无码免费人妻超级碰碰碰| 性欧美久久| 97国产精品视频人人做人人爱| 亚洲综合久久成人AV| 午夜不卡视频| 欧美日本在线| 国产美女精品一区二区| 九九久久精品国产av片囯产区| 日韩福利在线视频| 无码av免费不卡在线观看| 手机在线看片不卡中文字幕| 欧美精品不卡| 国产欧美精品一区aⅴ影院| 日韩精品无码免费一区二区三区| 啪啪免费视频一区二区| 色妞www精品视频一级下载| 国产91精选在线观看| 日韩欧美视频第一区在线观看| 婷婷午夜天| 国产成人调教在线视频| 亚洲人成色在线观看| 亚洲综合一区国产精品| 九色综合视频网| 国产91特黄特色A级毛片| 亚洲一区二区三区中文字幕5566| 波多野结衣一区二区三区四区| 天堂va亚洲va欧美va国产| 国产91透明丝袜美腿在线| 国产91久久久久久| 国产女人在线视频| 丰满人妻久久中文字幕| 免费女人18毛片a级毛片视频| 国产精品区视频中文字幕| a级毛片免费网站| 国产精品熟女亚洲AV麻豆| 国产在线精品人成导航| 九色最新网址| 天天色天天综合| 国产黄视频网站| 欧美伊人色综合久久天天| 欧美日韩一区二区三区在线视频| 男人的天堂久久精品激情| 女人爽到高潮免费视频大全| 中文字幕亚洲精品2页|