这里先介绍几个概念

IP: 指独立IP数。00:00-24:00内相同IP地址之被计算一次。

PV:即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。

UV: 即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。

统计功能可以借助一些其他工具进行统计。具体哪些工具就不细说了,可以通过类似在页面上加<script>等统计,我们这里是自己实现用户访问的统计。

我们在采用过滤器中进行页面的统计。

//过滤器
@Component
public class SimpleCORSFilter implements Filter {@Autowiredprivate IPCountService ipCountService;public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {//过滤器层面进行统计访问量ipCountService.addIPCountOther(req);HttpServletResponse response = (HttpServletResponse) res;response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");response.setHeader("Access-Control-Max-Age", "3600");response.setHeader("Access-Control-Allow-Headers", "x-requested-with");chain.doFilter(req, res);}public void init(FilterConfig filterConfig) {}public void destroy() {}}
    //service方法@Overridepublic void addIPCountOther(ServletRequest req) {String requestURL = ((RequestFacade) req).getRequestURI();if (requestURL.endsWith(".css") || requestURL.endsWith(".js") || requestURL.endsWith(".png") || requestURL.endsWith(".woff2") || requestURL.endsWith(".ico") || requestURL.endsWith(".woff") ||requestURL.endsWith(".gif") || requestURL.endsWith(".css") || requestURL.endsWith(".jpg") || requestURL.endsWith("/404")) {return;}IPCount ipCount = new IPCount();ipCount.setUrl(requestURL);ipCount.setAccessTime(new Date());String realIP =IPUtils.getRemoteIp((HttpServletRequest) req);ipCount.setIPAddress(realIP);ipCount.setFilterType(2);ipCountDao.addIPCount(ipCount);}
    /*** 获取IP地址** @param request HttpServletRequest* @return IP地址*/public static String getRemoteIp(HttpServletRequest request) {String ip = request.getHeader("x-forwarded-for");if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");logger.info("[IPUtils getRemoteIp] Proxy-Client-IP:" + ip);}if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");logger.info("[IPUtils getRemoteIp] WL-Proxy-Client-IP:" + ip);}if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();logger.info("[IPUtils getRemoteIp] getRemoteAddr:" + ip);}if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("X-Real-IP");logger.info("[IPUtils getRemoteIp] X-Real-IP:" + ip);}return ip;}

在Nginx.conf 这个配置文件中加入

         proxy_set_header       X-Real-IP $remote_addr;  proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header       X-Forwarded-For $http_x_forwarded_for;

这样,我们可以通过 X-Real-IP 这个消息头获取到真实路径。因为我们通过Nginx做服务器,所有Nginx访问tomcat的时候,获取的IP时为127.0.0.1;

下面是截取了数据库中的一部分登录IP数据,我们就可以根据数据来统计每日的IP和PV了。而且也可以看到一些不友善的访问,比如下面的wp-login.php这种。后面我们就可以根据访问情况进行网站的维护和优化。

欢迎转载,转载请注明出处 http://www.dingyinwu.com/article/66.html

如果文章中有任何问题或者可以改进的地方,请大家多提提意见,我会非常感激。

从零开始搭建自己的网站二十一:网站IP/PV统计功能设计相关推荐

  1. 从零开始搭建无人机导航系统(二)——初识传感器(二)

    前言  上一篇中,我们初步了解了多旋翼无人机最常用,也是最核心的几种传感器--IMU.气压计.磁力计.GPS.基于以上几种传感器,我们能够搭建一套完整的组合导航系统,从而对无人机的姿态.速度.位置等信 ...

  2. 网站流量度量术语 IP PV UV

    1.IP IP(独立IP),即 Internet Protocol,这里指独立IP数,独立IP数是指不同IP地址的计算机访问网站时被计的总次数.独立IP数是衡量网站流量的一个重要指标.一般一天内(00 ...

  3. 从零开始搭建Vue2.0项目(二)之集成axios

    文章目录

  4. 零基础小白,如何从零开始搭建网站?(详细步骤)

    拥有一个自己的网站是一件多么美妙的事? 可以随时写博客文章.不用担心这个不规范.那个不合规的,只要不违法,随心所欲做博主.如果放到第三方网站上,还担心哪天对方倒闭了,会白白浪费多年时间,积累全无! 可 ...

  5. 真正从零开始搭建网站—宝塔面板+wordpress(超详细教程)

    如果还有不了解宝塔面板怎么使用的小伙伴,可以看下我总结的系列教程,保证从新手变老鸟: [宝塔面板精选教程汇总] 宝塔面板教程(1)基于云服务器搭建宝塔面板教程最全详解 宝塔面板教程(2)宝塔面板添加W ...

  6. JavaScript 编程精解 中文第三版 二十一、项目:技能分享网站

    二十一.项目:技能分享网站 原文:Project: Skill-Sharing Website 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScri ...

  7. 从零开始搭建自己的网站一:整体步骤

    之前我的博客内容都是写在CSDN上(博客地址),后来玩过GitHub(博客地址).今天我们从零开始搭建一个属于自己的博客网站,包括服务器,数据库等. 步骤分别为: 1.购买一台云服务器(我购买的阿里云 ...

  8. 从零开始搭建自己的网站可外网访问从购买服务器开始

    从零开始搭建一个自己的网站 1.购买云服务器 2.进入云服务器修改文件 3.上传html文件 4.外网访问 5. 其他 5. 申请及绑定绑定域名 1.购买云服务器 想要自己搭建的网页可以被别人看到,不 ...

  9. 【个人网站】零基础个人网站搭建完整教程二(网站服务器配置)

    零基础个人网站搭建完整教程(二) 内容包括:前端搭建+后端搭建+如何选购服务器和域名+连接服务器+上传代码+网站上线(完整教程) 从0到1搭建网站 零基础个人网站搭建完整教程(二) 前言 三.选购服务 ...

最新文章

  1. 同事乱用 Redis 卡爆,我真是醉了...
  2. 抛弃UITableView,让所有列表页不再难构建
  3. 支持的网卡列表_Windows 10的5G网卡折腾笔记(含采购链接)
  4. postgresql测试题_PostgreSQL练习
  5. Linux 创建交换(swap)分区
  6. 【翻译】Nginx的反向代理
  7. 【飞秋怎么用】企业应用
  8. (4)Linux进程调度-组调度及带宽控制
  9. 五大最主流浏览器综合性能测试
  10. CIO感悟:IT人转型之“势、道、术”
  11. 项目经理的第二手准备-坚强的挺着(4)
  12. MongoDB进阶系列(12)——MongoDB 固定集合
  13. ESP32 Uart串口控制器
  14. 一些好用的链接(持续更新)——视频相关
  15. 百度地图开发-在百度地图上面显示出运动的轨迹
  16. 什么猫猫最受欢迎?Python采集猫咪交易数据
  17. java毕业设计坝上长尾鸡养殖管理系统Mybatis+系统+数据库+调试部署
  18. 无惧黑暗强光,纯视觉导航也能全天候作业
  19. Non-local的一些理解
  20. TIPTOP 4GL——自定义按钮前加图标

热门文章

  1. RabbitMq安装Web界面插件报错
  2. pytorch神经网络对Excel数据集进行处理2.0(读取,转为tensor格式,归一化),并且以鸢尾花(iris)数据集为例,实现BP神经网络
  3. nodemon : 无法加载文件 C:\Users\cell\AppData\Roaming\npm\nodemon.ps1,因为在此系统上禁止运行脚本。
  4. FPGA驱动24C04实现读写操作,提供工程源码和技术支持
  5. 转:typedef的用法
  6. Python之图片转PDF
  7. 掌握 Windows 命令行界面:常用 DOS 命令简介
  8. 微信小程序中background-attachment:fixed兼容问题
  9. 来自一个敲了5年代码的网络安全工程师的自述(目前薪资20K)
  10. 如何提高网站关键词排名和增加收录量