zoukankan      html  css  js  c++  java
  • JSP页面中实现网站访问量统计

    1、使用Mysql 实现简单的访问量统计,统计年、月、日统计量。

      http://www.iteye.com/problems/14718

    有一个方法可以一步到位进行查询。但限于在mysql上,使用BIT_COUNT函数。 
    下面给一个示例,资料来自互联网。 
    
    建表语句: 
    
    DROP DATABASE IF EXISTS `test`; 
    CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */; 
    USE `test`; 
    
    # 
    # Table structure for table t1 
    # 
    
    CREATE TABLE `t1` ( 
      `year` year(4) default NULL, 
      `month` int(2) unsigned zerofill default NULL, 
      `day` int(2) unsigned zerofill default NULL 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
    
    查询语句: 
    
    select year, month, BIT_COUNT(BIT_OR(1<<day)) as days from t1 group by year, month; 
    
    即按年月日自动统计并分组。

    2、使用过滤器

    http://zhidao.baidu.com/question/130322471.html

    写一个filter,对每个请求都作处理,
    在数据库创建今日访问量、总访问量和今日时间等字段,
    如果根据IP来判断,那还要有一个表记录IP,
    进入filter后->获取客户端IP->查询是否存在->存在访问量不加,不存在就加1,还可以限定每个IP一天一次或是一周一次什么的。。。
    filter在网上找最简单的例子就行了,在doFilter里写
    public void doFilter(ServletRequest request, ServletResponse response,
       FilterChain chain) throws IOException, ServletException {
      HttpServletRequest req=(HttpServletRequest) request;
      HttpSession session=req.getSession();
      String ip=客户端IP;
      从数据库查IP是否存在;
      if(不存在){
        今日访问量和总访问量加1;
        if(今日时间不是当前时间){
           今日时间变为当前时间;
        }
      }
    
      long todayVisit=今日访问量(从数据库查);
      long totalVisit=总访问量;
      session.setAttribute("todayVisit", todayVisit);
      session.setAttribute("totalVisit", totalVisit);
      chain.doFilter(req, response);
     }
    
    然后在jsp页面里
    今日访问量为:${todayVisit},总访问量为:${totalVisit}

    3、后台计数

    由于服务器和客户端在交互中维持一个Session。当用户第一次进行一个请求时,服务器端创建一个Session,此时在Session中创建一个属性,类似是一个计数的Flag,然后进行计数,存入数据库,然后将Flag设置成已计数,作为一次访问。之后客户端只要在同一个Session中进行操作,由于Flag为已计数,故不再计数,除非在另外的Session中,则将作为另一次访问。这种方法实现比较简单,不过对于多并发的情况,需要考虑对数据库中同一个字段频繁操作时另外处理。

  • 相关阅读:
    懒人的gitlab安装
    SuperFish插件实现鼠标停留浮动的菜单栏.
    Bootstrap I
    京东首页样式分析.
    CentOs装VLC
    TI CC2541的通讯抓包.
    ffmpeg+ffserver实现摄像头直播
    arm linux上的第一个应用程序 BOA移植
    linux内核移植 I
    uboot启动参数
  • 原文地址:https://www.cnblogs.com/height/p/2551839.html
Copyright © 2011-2022 走看看