网站访问量的统计(Application和Session应用)

下面介绍如何进行ASP.NET中网站访问量的统计。

一、建立一个数据表IPStat用于存放用户信息

我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间(IP_DateTime),些表的信息本人只保存一天的信息,如果要统计每个月的信息则要保存一个月。因为我不太懂对数据日志的操作,所以创建此表,所以说我笨吧,哈哈。

二、在Global.asax中获取用户信息

在Global.asax的Session_Start即新会话启用时获取有关的信息,同时在这里实现在线人数、访问总人数的增量统计,代码如下:

void Session_Start(object sender, EventArgs e)
{    
//获取访问者的IP    
string ipAddress = Request.ServerVariables["REMOTE_ADDR"];    
//获取访问者的来源    
string ipSrc;    
//判断是否从搜索引擎导航过来的    
if (Request.UrlReferrer == null)    
{    ipSrc = "";    }    
else    
{    
//获取来源地址    
ipSrc = Request.UrlReferrer.ToString();    
}    
//获取访问时间    
DateTime ipDatetime = DateTime.Now;    
//保存IP信息到数据库中    
IPControl cont = new IPControl();    
cont.AddIP(ipAddress, ipSrc, ipDatetime);    
//获取用户访问的页面    
string pageurl = Request.Url.ToString();    
//判断访问的是否是默认页    
if (pageurl.EndsWith("IPStat.ASPx"))    
{    
//锁定变量   
Application.Lock();   
//为页面访问量+1    
Application["StatCount"] = int.Parse(Application["StatCount"].ToString()) + 1;    
//解锁   
 Application.UnLock();    
}    
//锁定变量    
Session.Timeout = 10; 
//设定超时为10分钟   
 Application.Lock();   
 Application["countSession"] = Convert.ToInt32(Application["countSession"]) + 1;//访问总人数+1   
 Application["onlineWhx"] = (int)Application["onlineWhx"] + 1; //在线人数加+1    
Session["login_name"] = null;    
//解锁    
Application.UnLock();    }   

提醒一句,别忘了下面的代码,以实现在用户离线时,将在线人数减去1.

void Session_End(object sender, EventArgs e)    
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 InProc 时,才会引发 Session_End 事件。 如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
//锁定变量
Application.Lock();
Application["onlineWhx"] = (int)Application["onlineWhx"] - 1; //在线人数减-1
Session["login_name"] = null;
//解锁
Application.UnLock();
}

三、将以上有关信息保存到数据库IPStat

ASP.NET中网站访问量统计的最后一个实现步骤,就是创建了一个获取IP数据信息的类IPControl(),

用来实现对数据库IPStat数据的操作,关于IPControl()类的内容,因为它是C#中对数据库的操作,

*******************************************************************
一、开发流程
步骤1:
首先新建ASP.NET应用程序,如OnLine。
步骤2:
在默认Web窗体Default.aspx中放置两个Label控件,分别命名为“lblTitle”(Text属性为“当前在线人数” 和“lblCounter”)和“lblCounter”(Text属性为空)。
步骤3:
Default.aspx.cs 完整后置代码如下。
 1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10 public partial class _Default : System.Web.UI.Page
11 {
12 protected void Page_Load(object sender, EventArgs e)
13 {
14 if (!Page.IsPostBack)
15 {
16 if (Application["counter"] != null)
17 {
18 lblCounter.Text = Application["counter"].ToString();
19 }
20 }
21 }
22 }
步骤4:
创建全局类Global.asax 完整代码如下。
 1 <%@ Application Language="C#" %>
2 <script runat="server">
3 void Application_Start(object sender, EventArgs e)
4 {
5 // 在应用程序启动时运行的代码
6 // 初始化站点在线人数计数器
7 Application["counter"] = 0;
8 }
9
10 void Application_End(object sender, EventArgs e)
11 {
12 // 在应用程序关闭时运行的代码
13 }
14
15 void Application_Error(object sender, EventArgs e)
16 {
17 // 在出现未处理的错误时运行的代码
18 }
19 void Session_Start(object sender, EventArgs e)
20 {
21 // 在新会话启动时运行的代码
22 // 加锁,防止并发运行
23 Application.Lock();
24 // 计数器增1
25 Application["counter"] = Convert.ToInt32(Application["counter"]) + 1;
26 // 解锁
27 Application.UnLock();
28 }
29 void Session_End(object sender, EventArgs e)
30 {
31 // 在会话结束时运行的代码。
32 // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
33 // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
34 // 或 SQLServer,则不会引发该事件。
35 // 加锁
36 Application.Lock();
37 // 计数器减1
38 Application["counter"] = Convert.ToInt32(Application["counter"]) - 1;
39 // 解锁
40 Application.UnLock();
41 }
42 </script>
步骤5:
配置Web.Config文件,完整代码如下。
 1 <?xml version="1.0"?>
2 <!--
3 注意: 除了手动编辑此文件以外,您还可以使用
4 Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
5 “网站”->“Asp.Net 配置”选项。
6 设置和注释的完整列表在
7 machine.config.comments 中,该文件通常位于
8 \Windows\Microsoft.Net\Framework\v2.x\Config 中
9 -->
10 <configuration>
11 <appSettings/>
12 <connectionStrings/>
13 <system.web>
14 <!--
15 设置 compilation debug="true" 将调试符号插入
16 已编译的页面中。但由于这会
17 影响性能,因此只在开发过程中将此值
18 设置为 true。
19 -->
20 <compilation debug="true"/>
21 <!--
22 通过 <authentication> 节可以配置 ASP.NET 使用的
23 安全身份验证模式,
24 以标识传入的用户。
25 -->
26 <authentication mode="Windows"/>
27 <!--
28 如果在执行请求的过程中出现未处理的错误,
29 则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
30 开发人员通过该节可以配置
31 要显示的 html 错误页
32 以代替错误堆栈跟踪。
33 <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
34 <error statusCode="403" redirect="NoAccess.htm" />
35 <error statusCode="404" redirect="FileNotFound.htm" />
36 </customErrors>
37 -->
38 <sessionState mode="InProc" stateConnectionString="tcpip=SampleStateServer:42424" cookieless="false" timeout="1">
39 </sessionState>
40 </system.web>
41 </configuration>
二、具体参数说明
在Web.Config文件中需增加<SessionState>节点,各属性说明:
mode:指定存储会话状态值的位置。"InProc"表示会话处于正在处理 ASP.NET 辅助进程的状态。
stateConnectionString:指定远程存储会话状态的服务器名称或地址以及端口。端口值必须为 42424。默认值为 "tcpip=127.0.0.1:42424"。
cookieless:指定对于 Web 应用程序使用 Cookie 的方式。false为不使用。





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet: 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4、page指令 5.4.1、设置页面的MIME 5.4.2、设置文件编码 5.4.3、错误页的设置 5.4.4、数据库连接操作 5.5、包含指令 5.5.1、静态包含 5.5.2、动态包含 5.6、跳转指令 5.7、实例操作:用户登陆程序实现(JSP + JDBC实现) 5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围(pageContext范围) 6.2.2、request属性范围 6.2.3、session属性范围 6.2.4、application属性范围 6.2.5、深入研究page属性范围 6.3、request对象 6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得Session Id 6.5.2、登陆及注销 6.5.3、判断新用户 6.5.4、取得用户的操作时间 6.6、application对象 6.6.1、取得虚拟目录对应的绝对路径 6.6.2、范例讲解:网站计数器 6.6.3、查看application范围的属性 6.7、WEB安全性及config对象 6.7.1、WEB安全性 6.7.2、config对象 6.8、out对象 6.9、pageContext对象 6.10、本章摘要 6.11、开发实战讲解(基于Oracle数据库) 第7章 JavaBean 7.1、JavaBean简介 7.2、在JSP中使用JavaBean 7.2.1、WEB开发的标准目录结构 7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用指令 7.3、JavaBean与表单 7.4、设置属性: 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性: 7.6、JavaBean的保存范围 7.6.1、page范围的JavaBean 7.6.2、request范围的JavaBean 7.6.3、session范围的JavaBean 7.6.4、application范围的JavaBean 7.7、JavaBean的删除 7.8、实例操作:注册验证 7.9、DAO设计模式 7.9.1、DAO设计模式简介 7.9.2、DAO开发 7.9.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值