.net页面访问次数统计实现原理与代码_实用技巧

数据库准备:建立一个表total里面数据项为totals类型为varchar 50
.net语言环境:C#
global.asax里的代码

复制代码 代码如下:

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">
string strSelect;
SqlConnection conPubs;
SqlDataAdapter dadPubs;
DataSet dstTitles;
DataRow drowTitle;
void Session_Start(Object sender , EventArgs e)
{
if ( Application[ "SessionCount" ] == null ) {
    Application[ "SessionCount" ] = 0;
    strSelect = "SELECT totals From total";
    conPubs = new SqlConnection(@"Server=localhost;Integrated Security=SSPI;Database=test");
    dadPubs = new SqlDataAdapter(strSelect, conPubs);
    dstTitles = new DataSet();
    dadPubs.Fill(dstTitles, "total");
    drowTitle = dstTitles.Tables["total"].Rows[0];
    Application[ "SessionCount" ]=System.Convert.ToInt32(drowTitle["totals"].ToString().Trim());
}
}
void Session_End() {
    Application["SessionCount"] = 0;  
}
</script>

SessionCount.aspx里的代码

复制代码 代码如下:

void Page_Load(Object sender , EventArgs e)
{
    int total = 0;
    string strSelect;
    SqlConnection conPubs;
    //要执行某项数据操作要用SqlCommand方式调用
    SqlCommand cmdSql;
    //为了防止同文档里的其他页面在访问时也进行累加运算
    int intHits = 0;
    intHits = (int)Application["SessionCount"];
    intHits += 1;
    Application["SessionCount"] = intHits;
    lblSessionCount.Text = Application[ "SessionCount" ].ToString();
    total = (int)Application["SessionCount"];
    strSelect = "update total set totals= @total";
    conPubs = new SqlConnection(@"Server=localhost;Integrated Security=SSPI;Database=test");
    cmdSql = new SqlCommand(strSelect, conPubs);
    cmdSql.Parameters.Add("@total", total);
    conPubs.Open();
    cmdSql.ExecuteNonQuery();
    conPubs.Close();
}

上段代码有个小问题,就是过了一段时间后,Application["SessionCount"]的值会变成0,而且由于前面设置了一个初始的0,也会连带的把数据库里原来保存的值更新为0起始.
更改后
global.asax

复制代码 代码如下:

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">
string strSelect;
SqlConnection conPubs;
SqlDataAdapter dadPubs;
DataSet dstTitles;
DataRow drowTitle;
void Session_Start(Object sender , EventArgs e)
{
if ( Application[ "SessionCount" ] == null ) {
    Application[ "SessionCount" ] = 0;
    strSelect = "SELECT totals From total";
    conPubs = new SqlConnection(@"Server=localhost;Integrated Security=SSPI;Database=test");
    dadPubs = new SqlDataAdapter(strSelect, conPubs);
    dstTitles = new DataSet();
    dadPubs.Fill(dstTitles, "total");
    drowTitle = dstTitles.Tables["total"].Rows[0];
    Application[ "SessionCount" ]=System.Convert.ToInt32(drowTitle["totals"].ToString().Trim());
}
}
void Session_End() {
    Application["SessionCount"] = null;  
}
</script>

SessionCount.aspx

复制代码 代码如下:

<script language="C#" runat="server">
void Page_Load(Object sender , EventArgs e)
{
    int total = 0;
    string strSelect;
    SqlConnection conPubs;
    //要执行某项数据操作要用SqlCommand方式调用
    SqlCommand cmdSql;
    //为了防止同文档里的其他页面在访问时也进行累加运算
    int intHits = 0;
    intHits = (int)Application["SessionCount"];
    intHits += 1;
    total = intHits;
    lblSessionCount.Text = intHits.ToString();
     strSelect = "update total set totals= @total";
    conPubs = new SqlConnection(@"Server=localhost;Integrated Security=SSPI;Database=test");
    cmdSql = new SqlCommand(strSelect, conPubs);
    cmdSql.Parameters.Add("@total", total);
    conPubs.Open();
    cmdSql.ExecuteNonQuery();
    conPubs.Close();
    Application["SessionCount"] = null;
}
</script>

时间: 2024-09-24 09:23:04

.net页面访问次数统计实现原理与代码_实用技巧的相关文章

asp.net c#采集需要登录页面的实现原理及代码_实用技巧

首先说明:代码片段是从网络获取,然后自己修改.我想好的东西应该拿来分享. 实现原理:当我们采集页面的时候,如果被采集的网站需要登录才能采集.不管是基于Cookie还是基于Session,我们都会首先发送一个Http请求头,这个Http请求头里面就包含了网站需要的Cookie信息.当网站接收到发送过来的Http请求头时,会从Http请求头获取相关的Cookie或者Session信息,然后由程序来处理,决定你是否有权限访问当前页面. 好了,原理搞清楚了,就好办了.我们所要做的仅仅是在采集的时候(或者

GridView导出Excel实现原理与代码_实用技巧

为了完成领导交代的任务,这几天都在做数据展现,因为时间比较紧,所以也没做太复杂,使用GridView来展示数据库表.几乎没对GridView的格式做什么设定,从配置文件中加载SQL,跑出数据就直接绑定到GridView.发现了一些问题,比如GridView的自动绑定列的宽度是没法设定的,而此时GridView的表格输出是不带宽度信息的,所以导致表格列比较多的时候显示起来会挤到页面里面很难看,由于表的列数并不是固定的,所以也没法很简单的用模版列的方式做,最后只好直接将表格宽度设置成一个很大的数了事

在ASP.NET使用JavaScript显示信息提示窗口实现原理及代码_实用技巧

在ASP.NET使用JavaScript显示信息窗口,你可下从Insus.NET的博客,下载一个DLL,放在站点的BIN目录.下载地址创建一个aspx页面,然后在.aspx.cs的做几个动作,一是引用命名空间,实例化对象. 然后在Page_load事件写javascript脚本: 复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) { string message = "Welcome, Insus.NET!"

aspx中页面按钮写返回上一页代码_实用技巧

<script>history.go(-1);</script> 不管怎样,它就是不返回上一页. 经查资料,原来在asp.net的处理方式已经有所改变.当用户点击按钮时,页已经刷新了.因此我们需要把-1改为-2方可以返回至前一页. 复制代码 代码如下: protected void ButtonGoBack_Click(object sender, EventArgs e) { this.Page.ClientScript.RegisterClientScriptBlock(thi

关于c#连接ftp进行上传下载实现原理及代码_实用技巧

复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; namespace ftponload { class Program { static void Main(string[] args) { //上传文件的方法 onload("D://outPut.txt"); //下载文件的方法 fload(); } pub

JS+JSP通过img标签调用实现静态页面访问次数统计的方法_javascript技巧

本文实例讲述了JS+JSP通过img标签调用实现静态页面访问次数统计的方法.分享给大家供大家参考,具体如下: 测试页面: test.html   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>test</title> <meta http-equiv="pragma" conte

通过img标签调用实现静态页面访问次数统计的简单方法

测试页面: test.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>test</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cac

ASP.NET页面优化 性能提升8倍的方法_实用技巧

为了让您对优化的效果有个直观的了解,我准备了下面的测试结果截图: 测试环境: 1. Windows Server 2003 SP2 2. Viaual Studio 2008,使用自带的WebDev.WebServer.EXE运行网站程序. 3. (ThinkPad SL510):Core2 T6670 2.2GHz, 4G内存 二个红框中的数字反映了优化前后的执行时间. 数字表明:优化前后,执行时间有了8倍多的差别. 测试背景 看过了优化结果,再来介绍一下:这个测试到底是在测试什么东西? 现在

ASP.NET 页面刷新的实现方法(包括html,js)_实用技巧

先看看ASP.NET页面刷新的实现方法: 第一: C# code private void Button1_Click( object sender, System.EventArgs e ) { Response.Redirect( Request.Url.ToString( ) ); } 第二: C# code private void Button2_Click( object sender, System.EventArgs e ) { Response.Write( " < sc