zoukankan      html  css  js  c++  java
  • 网站访问统计在Global.asax中的配置的深入讨论

    <%@ Application Language="C#" %>
    <%@ Import Namespace="System.Data.SqlClient" %>//引入这个命名空间一定不能少的。。

    <script runat="server">
       
        DataBase dbs = new DataBase();
        CommonClass coObj = new CommonClass();
        void Application_Start(object sender, EventArgs e)
        {
            // 在应用程序启动时运行的代码
            int Count = dbs.ExecuteScalar(System.Data.CommandType.Text, "select * from Counts", null);
            Application["LoginTime"] = Count.ToString(); ;//网站访问总计
            Application.Add ("Online",0);//网站在线人数
           
        }
       
        void Application_End(object sender, EventArgs e)
        {
            //  在应用程序关闭时运行的代码
            if (dbs.ExecuteNonQuery(System.Data.CommandType.Text, "update Counts set counts=" + int.Parse(Application["LoginTime"].ToString ()) + "") == 1)
            {
            }
            else
            {
                Response.Write(coObj.MessageBox("出现错误!"));
            }
           
        }
           
        void Application_Error(object sender, EventArgs e)
        {
            // 在出现未处理的错误时运行的代码

        }
     
        void Session_Start(object sender, EventArgs e)
        {
            // 在新会话启动时运行的代码
            Session.Timeout = 5;
            Session["UserId"] = "";
            Application.Lock();
            dbs.ExecuteNonQuery(System.Data.CommandType.Text, "update Counts set counts=" + int.Parse(Application["LoginTime"].ToString()) + "+1");
            Application["LoginTime"] = dbs.ExecuteScalar(System.Data.CommandType.Text, "select * from Counts", null);
            Application["Online"] = Convert.ToString(int.Parse(Application["Online"].ToString()) + 1);
            Application.UnLock();
        }

        void Session_End(object sender, EventArgs e)
        {
            // 在会话结束时运行的代码。
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
            // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
            // 或 SQLServer,则不会引发该事件。
            Application.Lock();
            Application["Online"] = Convert.ToString(int.Parse(Application["Online"].ToString()) - 1);
            Application.UnLock();
        }
          
    </script>


    这个统计方式的一大好处是可以避免IIS服务器因意外停止时而导致访问总数清0的现现像,因为每一次的访问都会加一然后将数据存入数据库中,保证了数据不会因IIS意外而丢失。

      还有就在要实现在这个功能在有一张专门保存数据的表,这张表只需要一个字段就行了。。
  • 相关阅读:
    fms中使用的页签(使用的模板)
    layui—layer,一个可以让你想到即可做到的javascript弹窗(层)解决方案(转)
    mybatis--oracle 利用接口 实现简单的增删改查以及一对一的两表关联查询
    mybatis--oracle 利用配置 实现简单的增删改查
    Java DecimalFormat的主要功能及使用方法
    SpringMVC的@ResponseBody返回字符串乱码问题解决
    org.apache.commons.lang.exception.NestableRuntimeException等缺少jar包的解决办法
    Mybatis框架搭建和简单的增删改查
    Struts2上传
    Struts2转换器
  • 原文地址:https://www.cnblogs.com/wantingqiang/p/1236828.html
Copyright © 2011-2022 走看看