Spring Boot入门(12)实现页面访问量统计功能

??在日常的网站使用中,经常会碰到页面的访问量(或者访问者人数)统计。那么,在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的代码如下:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>访问统计</title>
    <script th:inline="javascript">
        function load(){
            var count = [[${count}]];
            document.getElementById("visit").innerHTML = count.toString();
        }
    </script>
</head>
<body >
<h1>Hello, world!</h1>
<p>&emsp;&emsp;本页面已被访问<span id="visit"></span>次。</p>
</body>
</html>

控制器文件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 <String, Object> 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), 欢迎大家关注哦~~

原文地址:https://www.cnblogs.com/jclian91/p/9280172.html

时间: 2024-10-04 03:48:52

Spring Boot入门(12)实现页面访问量统计功能的相关文章

Spring Boot入门(10)实现文件下载功能

??在这篇博客中,我们将展示如何在Spring Boot中实现文件的下载功能. ??还是遵循笔者写博客的一贯风格,简单又不失详细,实用又能让你学会. ??本次建立的Spring Boot项目的主要功能为文件下载,而且这也是唯一功能,当然,作为例子,要尽可能简单,所以,功能简化为只下载E盘music_eg目录下的某一个文件. ??该Spring Boot项目的名称为file_download,其具体结构如下: build.gradle文件的代码如下: buildscript { ext { spr

Spring boot入门(三):SpringBoot集成结合AdminLTE(Freemarker),利用generate自动生成代码,利用DataTable和PageHelper进行分页显示

关于SpringBoot和PageHelper,前篇博客已经介绍过Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件,前篇博客大致讲述了SpringBoot如何集成Mybatis和Pagehelper,但是没有做出实际的范例,本篇博客是连接上一篇写的.通过AdminLTE前端框架,利用DataTable和PageHelper进行分页显示,通过对用户列表的增删改查操作,演示DataTable和PageHelper的使用. (1)Admi

Spring Boot 入门之持久层篇(三)

原文地址:Spring Boot 入门之持久层篇(三) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之 Web 篇(二)>介绍了 Spring Boot 的 Web 开发相关的内容,项目的开发离不开数据,因此本篇开始介绍持久层相关的知识. 二.整合 JdbcTemplate 2.1 添加依赖 <dependency> <groupId>org.springframework.boot</groupId&g

Spring Boot入门程序

创建第一个Spring Boot的入门程序. 带你一步一步的,搭建第一个Spring Boot 的入门程序,并成功运行,通过实践过程,初步认识和了解如何使用Spring Boot 创建应用程序. 一.开发环境 (1)JDK 1.8 (2)Eclipse Oxygen EE版本 或者也可以使用 IntelliJ IDEA (3)Tomcat 9 二.创建 Spring Boot 入门程序 1.创建工程 在Eclilpse EE中,点击"File"--"New"--&q

Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件

上一篇文章,写了如何搭建一个简单的Spring boot项目,本篇是接着上一篇文章写得:Spring boot入门:快速搭建Spring boot项目(一),主要是spring boot集成mybatis和pagehelper 关于mybatis和pagehelper的介绍,可以自行博客,网上很多类似的博客,这里,我直接上代码和项目搭建教程. 1.配置文件:在配置文件application.yml中配置MySql数据库连接池和Mybatis扫描包以及PageHelper分页插件 1 mybati

Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理

本文是接着上篇博客写的:Spring boot 入门(三):SpringBoot 集成结合 AdminLTE(Freemarker),利用 generate 自动生成代码,利用 DataTable 和 PageHelper 进行分页显示.按照前面的博客,已经可以搭建一个简单的 Spring Boot 系统,本篇博客继续对此系统进行改造,主要集成了 Shiro 权限认证框架,关于 Shiro 部分,在本人之前的博客(认证与Shiro安全框架)有介绍到,这里就不做累赘的介绍. 此系列的博客为实践部分

Spring Boot 入门(六):集成 treetable 和 zTree 实现树形图

本篇文章是接着Spring Boot 入门(五):集成 AOP 进行日志管理写的,主要集成了树形图,在部门列表或者权限列表中,树形图经常被用上.主要是根据相应的 API 凭借 html 字符串 1.treetable 1 <link href="/plugins/treeTable/themes/default/treeTable.css" rel="stylesheet" type="text/css" /> 2 <scrip

《深入实践Spring Boot》第1章 Spring Boot入门

目录 第1章 Spring Boot入门 1.1 配置开发环境 1.1.1 安装JDK 1.1.2 安装InterlliJ IDEA 1.1.3 安装Apache Maven 1.1.4 安装Git客户端 1.2 创建项目工程 1.2.1 使用Maven新建项目 1.2.2 使用Spring Initializr新建项目 1.3 使用Spring Boot 1.3.1 Maven依赖管理 1.3.2 一个简单的实例 1.4 运行与发布 1.4.1 在IDEA环境中运行 1.4.2 将应用打包发布

Spring Boot 入门(十一):集成 WebSocket, 实时显示系统日志

以前面的博客为基础,最近一篇为Spring Boot 入门(十):集成Redis哨兵模式,实现Mybatis二级缓存.本篇博客主要介绍了Spring Boot集成 Web Socket进行日志的推送,并实时显示在页面上. 1.导入jar包 第一个jar包是websocket的,第二个jar包是关于环形队列的jar包,本案例是通过本地队列存储日志.有条件的话,最好通过中间件存储(eg:redis,mq……).通过本地队列存储日志会存在日志丢失的情况,且日志量太大,会把页面卡死. 1 <!--beg