在日常的网站使用中,经常会碰到页面的访问量(或者访问者人数)统计。那么,在Spring Boot中该如何实现这个功能呢?

我们的想法是比较简单的,那就是将访问量储存在某个地方,要用的时候取出来即可,储存的位置可选择数据库或者其他文件。本例所使用的例子为txt文件,我们将访问量数据记录在D盘的count.txt文件中。

下面直接开始本次的项目。整个项目的完整结构如下:

我们只需要修改划红线的三个文件,其中build.gradle的代码如下:

buildscript {

ext {

springBootVersion = '2.0.3.RELEASE'

}

repositories {

mavenCentral()

}

dependencies {

classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")

}

}

apply plugin: 'java'

apply plugin: 'eclipse'

apply plugin: 'org.springframework.boot'

apply plugin: 'io.spring.dependency-management'

group = 'com.example'

version = '0.0.1-SNAPSHOT'

sourceCompatibility = 1.8

repositories {

mavenCentral()

}

dependencies {

compile('org.springframework.boot:spring-boot-starter-web')

// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf

compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version: '2.0.1.RELEASE'

}

视图文件(模板)index.HTML的代码如下:

访问统计

function load(){

var count = [[${count}]];

document.getElementById("visit").innerHTML = count.toString();

}

Hello, world!

  本页面已被访问次。

控制器文件VisitController.java文件的代码如下:

package com.example.visit.Controller;

import java.io.*;

import java.util.Map;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

@Controller

public class VisitController {

@GetMapping("/index")

public String Index(Map map){

// 获取访问量信息

String txtFilePath = "D://count.txt";

Long count = Get_Visit_Count(txtFilePath);

System.out.println(count);

map.put("count", count); // 后台参数传递给前端

return "index";

}

/*

* 获取txt文件中的数字,即之前的访问量

* 传入参数为: 字符串: txtFilePath,文件的绝对路径

*/

public static Long Get_Visit_Count(String txtFilePath) {

try {

//读取文件(字符流)

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(txtFilePath),"UTF-8"));

//循环读取数据

String str = null;

StringBuffer content = new StringBuffer();

while ((str = in.readLine()) != null) {

content.append(str);

}

//关闭流

in.close();

//System.out.println(content);

// 解析获取的数据

Long count = Long.valueOf(content.toString());

count ++; // 访问量加1

//写入相应的文件

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(txtFilePath),"UTF-8"));

out.write(String.valueOf(count));

//清楚缓存

out.flush();

//关闭流

out.close();

return count;

}

catch (Exception e){

e.printStackTrace();

return 0L;

}

}

}

这样我们就完成了整个项目的配置,最后,我们在D盘中的count.txt中写入数字0,作为初始访问量。

运行Spring Boot项目,在浏览器中输入localhost:8080/index , 显示的页面如下:

刚载入页面时,显示页面被访问1次。当我们将这个这也载入10次后,显示如下:

这样我们就用Spring Boot实现了页面访问量的统计功能。

本次分享到此结束,欢迎大家交流~~

注意:本人现已开通两个微信公众号: 因为Python(微信号为:python_math)以及轻松学会Python爬虫(微信号为:easy_web_scrape), 欢迎大家关注哦~~

springboot记录用户访问次数_Spring Boot入门(12)实现页面访问量统计功能相关推荐

  1. springboot记录用户访问次数_SpringBoot中自定义注解实现控制器访问次数限制示例...

    今天给大伙介绍一下SpringBoot中如何自定义注解实现控制器访问次数限制. 在Web中最经常发生的就是利用恶性URL访问刷爆服务器之类的攻击,今天我就给大伙介绍一下如何利用自定义注解实现这类攻击的 ...

  2. jquery记录用户访问页面停留时间

    jquery记录用户访问页面停留时间示例代码: $(window).bind('beforeunload', function (e) {var end = new Date();//用户退出时间va ...

  3. java统计多个线程的请求次数_Web并发页面访问量统计实现

    页面访问量统计,可能在上学的时候就讲过如何简单实现,例如在servletContext中保存一个页页面访问次数,然后每访问一次加1:或者每访问一次就把操作记录保存到数据库,这样的处理方式,做做实验就算 ...

  4. java记录访问次数_Java 利用监听器来实现记录用户访问网站次数(示例代码)

    假如有这么一个需求,要记录所有用户访问某一页面的次数. 最先想到的可能是在该Controller定义一个静态成员,然后在相应Action里自增.但这样有一个问题,就是Tomcat或者其他服务器重启的话 ...

  5. springboot 拦截器_Spring Boot入门系列(十)如何使用拦截器,一学就会!

    前面介绍了Spring Boot 如何整合定时任务已经Spring Boot 如何创建异步任务,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhon ...

  6. js记录用户访问页面和停留时间

    1.setInterval setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval(code,millisec[,"lang" ...

  7. hibernate版本_Spring Boot入门(最新基于SpringBoot2.2.2版本系列教程)

    在本文中,主要内容包括什么是Spring Boot,优点,主要功能以及使用Spring Boot创建一个简单的应用程序. Spring Boot是什么? ​ Spring Boot是对Spring F ...

  8. 记录用户访问的地址 访问时间 以及ip地址

    const express = require('express') const fs = require('fs') const connection = require('./ulits/tool ...

  9. hive left outer join 子查询临时表_基于历史数据的用户访问次数,每天新老用户,日活,周活,月活的hive计算...

    最近有一个需求,统计每天的新老用户,日活,周活,月活. 我们每天的增量数据会加入到hive历史数据表中,包含用户访问网站的一些信息,字段有很多,包括用户唯一标识guid. 当然了日活,周活,月活就是一 ...

  10. shell最大出现和连续出现次数_shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)...

    当服务器压力比较大,跑起来很费力时候.我们经常做站点页面优化,会去查找那些页面访问次数比较多,而且比较费时. 找到那些访问次数高,并且比较耗时的地址,就行相关优化,会取得立竿见影的效果的. 下面是我在 ...

最新文章

  1. 回顾2021,展望2022
  2. c语言c++语言中静态变量,函数详解
  3. 开发日记-20190716 关键词 读书笔记 《Perl语言入门》Day 10
  4. mysql数据库的常用操作-索引
  5. 【Android 应用开发】Android 返回堆栈 与 任务
  6. 安全容器的发展与思考
  7. 扫描指定包并解析为BeanDefinition
  8. 架构之美第二章-美丽架构的含义
  9. 讨论用户注册有的几篇好文
  10. 用c语言中的函数来求公约数,C语言中求最大公约数的函数
  11. Linux下防火墙开启相关端口及查看已开启端口
  12. java增强connection类_关于DriverManager.getConnection()里的增强实现
  13. ios pan手势滑动消失动画_IOS UIPanGestureRecognizer手势使用及识别状态UIGestureRecognizerState...
  14. 7. where loop
  15. 圆形刻度盘 进度 展示
  16. 数据接口复习 3 stack and queue
  17. ps画画模糊笔刷_大量PS笔刷AI笔刷打包下载(超过1000款笔刷)
  18. 转载:应用架构、业务架构、技术架构和业务流程图
  19. 计算机发展简史的ppt教程,计算机发展简史PPT.ppt
  20. PHP语言是什么语言及能解决当下什么问题-动态更新

热门文章

  1. C语言4位BCD码加法器,四位二进制8421BCD码加法器.doc
  2. PySpark fold foldByKey用法
  3. Mysql自增主键用完了怎么办
  4. SAP MM模块库存结存报表
  5. 基于easyX实现俄罗斯方块
  6. 计算机键盘按键数量,电脑键盘有一百多个按键,有3个很少人会碰
  7. CNVD-2020-10487(CVE-2020-1938)tomcat ajp 文件读取漏洞
  8. Error: ImageIO: PNG invalid PNG file: iDOT doesn't point to valid IDAT chunk
  9. 行业研究报告-全球与中国白光LED电子皮镜市场现状及未来发展趋势
  10. 如何让域用户安装需要管理员权限的软件