• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

用ASP.NET制作计数器

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
设计构思

计数器的核心工作就是想办法将访问的次数记录下来,并且能够方便的读出数据记录在此应用中,拟建立四个文件,一个是webform1.aspx,主要是用于显示访问次数记录,一个counter.txt文件用于存储访问次数记录,还有global.asax和global.asax.cs,这两个文件是核心文件,主要是负责响应事件和读写文件因此,程序必须具有打开文件,读文件,累加数值,写文件等功能同时,还需注意:在进行数值累加时,不能象ASP中的那样写成

application(“counter”)=application(“counter”)+1 

因为数值类型不能和对象做数学运算经过以上的思考,我们基本就可以编写代码了,但是在完成编写之前,还应了解以下的相关知识 



相关知识

1. Global.asax文件

Global.asax文件也称为ASP.NET应用程序文件,它一般被放在根目录下此文件中的代码不产生用户界面,也不相应单个页面的请求它主要是负责处理Application_Start,Application_End,Session_Start和Session_End事件的

2. Application对象及其事件

Application 对象来自HttpApplictionStat 类它可以在多个请求、连接之间共享公用信息,也可以在各个请求连接之间充当信息传递的管道此对象的生命周期起于IIS开始运行并且有人开始连接时,终止于IIS关闭或者若干时间内无人连接(默认为20分钟)当Application 对象的生命周期开始时,Application_Start 事件会被启动,当Application对象的生命周期结束时Application_End 事件会被启动 

3. Session对象及其事件

Session对象有着与Application类似的事件:Session_Start和Session_End事件当有一个新用户访问应用程序时,就会立刻触发Session_Start事件当某个用户停止了访问或者程序执行了Session.Abandon方法,就会触发Session_End事件

4. Application和Session对象比较

Session对象与Application对象有些相似,但其作用域有更大的限制Application对象是针对所有用户都生效,而Session对象则相反,每个用户都有自己的Session对象,它的生命周期起始于服务器产生对用户请求页面的相应,终止于用户断开与服务器的连接Application对象不会象Session对象那样当一个新用户请求就触发事件,Application对象的事件只触发一次,就是在第一个用户的第一个请求时一个Application_End事件肯定发生在Session_End事件之后,Application_End事件只有在服务器停止工作或Application_End事件卸载时才触发 



程序部分

首先建立一个文本文件counter.txt,打开文件输入一个大于0的整数作为访问记录的初始值

面我们就可以正式的编写计数器的程序了

listing 1是webform1.aspx,主要是用于显示从文件中读出的访问次数的记录由于在整个应用程序生命周期中,Application 对象都是有效的,所以在不同的页面中都可以对它进行存取,就像使用全局变量一样方便

在代码中,使用<%=Application["counter"]%>来表示访问次数记录

程序代码如下:

listing1 -----webform1.aspx-----

<%@ Page language="c#" Src="WebForm1.aspx.cs" Inherits="counter1.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

<HEAD>

<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">

<meta name="CODE_LANGUAGE" Content="C#">

</HEAD>

<body>

<form ]%>位访问者!</FONT>

</form>

</body>

</HTML> 

 

Listing 2和listing3是global.asax和global.asax.cs文件代码,当执行webform1.aspx文件之前会执行它们在global.asax.cs文件中,定义了一些事件和其响应代码,主要是用于读写文件和数值累加

Listing 2 -----global.asax----

<%@ Application Src="Global.asax.cs" Inherits="counter2.Global" %>

listing 3 -----global.asax.cs-----

using System;

using System.Collections;

using System.ComponentModel;

using System.Web;

using System.Web.SessionState;

using System.IO ;

namespace counter2

{

public class Global : System.Web.HttpApplication

{

protected void Application_Start(Object sender, EventArgs e)

{

uint count=0;

StreamReader srd;

//取得文件的实际路径

string file_path=Server.MapPath ("counter.txt");

//打开文件进行读取

srd=File.OpenText (file_path);

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

{

string str=srd.ReadLine ();

count=UInt32.Parse (str);

}

object obj=count;

Application["counter"]=obj;

srd.Close ();

}



protected void Session_Start(Object sender, EventArgs e)

{

Application.Lock ();

//数值累加,注意这里使用了装箱(boxing)

uint jishu=0;

jishu=(uint)Application["counter"];

jishu=jishu+1;

object obj=jishu;

Application["counter"]=obj;

//将数据记录写入文件

string file_path=Server.MapPath ("counter.txt");

StreamWriter fs=new StreamWriter(file_path,false);

fs.WriteLine (jishu);

fs.Close ();

Application.UnLock ();

}

protected void Application_BeginRequest(Object sender, EventArgs e)

{

}

protected void Application_EndRequest(Object sender, EventArgs e)

{

}

protected void Session_End(Object sender, EventArgs e)

{

}

protected void Application_End(Object sender, EventArgs e)

{

//装箱

uint js=0;

js=(uint)Application["counter"];

//object obj=js;

//Application["counter"]=js;

//将数据记录写入文件

string file_path=Server.MapPath ("counter.txt");

StreamWriter fs=new StreamWriter(file_path,false);

fs.WriteLine(js);

fs.Close ();

}

}





经过以上的讨论,一个简单的主页计数器就完成了其核心就是以文本模式进行文件读写


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.net使用飞信fetionAPI接口免费发送短信的c#的实例发布时间:2022-07-10
下一篇:
asp.net控件开发基础(10)发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap