利用ASP.NET制作网站访问计数器

利用ASP.NET制作网站访问计数器


2024年6月21日发(作者:)

龙源期刊网

利用ASP.NET制作网站访问计数器

作者:刘笑迎 张 辉

来源:《电脑知识与技术·学术交流》2008年第25期

摘要:该文通过程序实例,详细介绍了在中实现图形化网站访问计数器的方

法。

关键词:ASP. NET;网站;计数器

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)25-1451-03

Design the Website Access Counter in

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 .

Key words: ; website; counter

1 引言

当我们的动态网站发布到网上后,怎样得知它的受欢迎程度呢?一个最常用的指标就是网

站的访问次数,网站访客计数器就是对网站的访问次数进行统计。因此,实现一个美观大方又

有个性的计数器是大多数网站管理员的所求。利用技术来实现网站访问计数器简单

方便,其原理也容易被理解,同时计数结果还可以使用漂亮的图片显示在主页上呈现给访问用

户。

2 设计构思

计数器的核心工作就是想办法将访问的次数记录下来,并且能够方便的读出数据记录。利

用技术实现网站访问计数器,其基本思路如下:当用户从客户端访问网站时,通过

读取服务器硬盘上相应的计数文件,并对计数器文件的数据进行加1操作,把当前的计数值在

客户端进行显示,然后写回该计数文件。

在此应用中,要建立三个文件,一个,主要用于显示访问次数,一个

文件用于存储访问次数。还有,这个文件是核心文件,主要负责响应事件和读写文

件。下面注重分析文件。

龙源期刊网

2.1 文件

文件也称为应用程序文件,它一般被放在应用程序根目录下。此文

件中的代码不产生用户界面,也不响应单个页面的请求。它主要是负责处理

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事件。当某个用户停止了访问或者程序执

行了n方法,就会触发Session_End事件。

3 网站访客计数器的具体实现方法

在中实现网站访问计数器。需要解决的关键问题是使用什么样的变量充当计数变

量,变量的累加操作在什么事件中进行,以及计数结果如何以图形化的方式显示。下面结合一

个具体的网站访问计数器实例详细说明。

3.1 创建文本文件,保存访客次数

任何变量都有生命周期,当Web服务器重启时,计数变量将重新初始化。因此需要建立

文本文件将计数的结果保存下来。

文件要想被应用程序读写,需要在文件的安全属性中添加aspnet用户,并

设置该用户访问的权限为可写。 具体做法:

打开的属性页,选择“安全”选项卡,单击“添加”按钮,添加用户,并在权

限中选择读取和写入,如图1所示。

3.2 定义计数变量

龙源期刊网

3.2.1 确定计数变量类型

定义计数变量的关键是要确定变量的类型。通过分析可以得出,用于计数的变量有一个特

点,就是所有访问网站的用户都可以读取和修改它。在中,只有 Application变量符合

以上特点。

因此,我们声明一个变量Application[“count”]作为计数变量。

3.2.2 计数变量读取初始化

运用h(“”)方法得到文件的路径,运用file类的OpenText方

法创建一个StreamReader对象,并将返回的对象赋值给mySR, 然后运用StreamReader类的

ReadLine方法读取文件内容,最后,将读到的数值赋给Application["count"]。

3.2.3 将程序代码写入Application_star事件

如果频繁地进行文件的读写,是必要影响程序的运行速度。因此,我们可以将读文件的操

作放置在Application_star事件当中。该事件在整个应用程序第一次被触发的事件,

也就是说在一个虚拟目录中第一个应用程序执行时触发。之后,在应用程序关闭之

前,该事件将不再触发。我们将读文件的操作写入该事件中,在整个应用程序运行其间,该操

作只进行一次。

具体代码如下:

protected void Application_Start(Object sender, EventArgs e)

{

int count=0;

StreamReader mySR;

string myFilePath=h ("");

mySR=xt (myFilePath);

while( ()!=-1)

{

string str=ne ();

count= (str);

龙源期刊网

}

Application["count"]=count;

();

}

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)

{

();--加锁

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

龙源期刊网

count=count+1;

object obj=count;

Application["count"]=obj;

();--解锁

}

3.4 以图形模式显示访客数值

我们需要将访客数值显示在页面上,为了增加网页的趣味性,可以用图片显示数字。为

此,首先要准备0-9的GIF图形文件:、、...,分别用来显示10个数字,然

后利用循环,一一取出计数变量中的数字字符,再将字符映射到GIF图形文件,使用

Response对象的Write方法,将其显示在网页上。程序代码放在程序中的

Page_Load事件中。

protected void Page_Load(object sender, rgs e)

{

int i;

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

string imgName;

("您是第");

for( i = 0 ; i

{

imgName = ing(i,1);

}

("位访问者");

}

3.5 将Application[“count”]中的数值写入文件

龙源期刊网

最后,运用StreamWrite类的WriteLine方法将最终的Application["count"]的值写入

文件。该事件代码可放在Application_End事件中。具体代码如下:

protected void Application_End(Object sender, EventArgs e)

{

int count=0;

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

//将数据记录写入文件

string myFilePath=h ("");

StreamWriter mySW=new StreamWriter(myFilePath,false);

ine(count);

();}

3.6 运行结果

计数器制作完毕后,通过浏览器调用可以得到如图2所示的结果。

图2

4 结束语

以上程序使用VC#编写,在 2005环境下调试通过,希望能给对编程有

兴趣的朋友一些启发。

参考文献:

[1] 王华章. 2.0网络系统开发使用教程[M].北京:中国铁道出版社,2006.


发布者:admin,转转请注明出处:http://www.yc00.com/web/1718956507a2753850.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信