Spring Boot入门(12)实现页面访问量统计功能-阿里云开发者社区

开发者社区> jclian91> 正文

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

简介:   在日常的网站使用中,经常会碰到页面的访问量(或者访问者人数)统计。那么,在Spring Boot中该如何实现这个功能呢?   我们的想法是比较简单的,那就是将访问量储存在某个地方,要用的时候取出来即可,储存的位置可选择数据库或者其他文件。
+关注继续查看

  在日常的网站使用中,经常会碰到页面的访问量(或者访问者人数)统计。那么,在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 onload="load()">
<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次

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


访问10次

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

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
asp.net 生成静态页面的简单例子
Asp.net生成静态文件示例源码(两种途径) Asp.net生成静态文件(根据时间自动命名保持,默认扩展名是htm可以自行修改)。 通过收入内容替换模板或者url地址两种方式进行静态文件的生成 templete.
713 0
有了智能指环Padrone Ring,挥动手指即可实现鼠标功能
这款智能指环重量只有8克,而且可通过蓝牙连接电脑,不占用USB口。
943 0
Spring MVC 基于阻塞队列 LinkedBlockingQueue 的同步长轮询功能实现
标题 Spring MVC 基于阻塞队列 LinkedBlockingQueue 的同步长轮询功能实现,其实本文介绍的也是生产者消费者的一种实现。生产者不必是一个始终在执行的线程,它可以是一个接口,接受客户端的请求,向队列中插入消息;消费者也不必是一个始终在执行的线程,它同样也可以是一个接口,接受客户端的请求,从队列中取出属于自己的消息;看到很多介绍生产者消息者实现的文章,实现场景都很简单,现实应用往往会比较复杂,有一些附加条件,本例中就需要根据消息中的 familyId 来判断消息是不是下发给自己的。
1136 0
完整的IPTV/OTT直播点播系统都有哪些功能?
说到IPTV或者OTT直播点播系统的完整功能,要看针对什么运营者以及在什么样的环境中使用,针对的是什么人群,这样说的完整功能才是比较有意义的。这里小编只是对IPTV/OTT直播点播系统,可能涉及到的模块功能进行介绍,对于有需要的朋友可以看看适合自己的情况下需要哪些模块,这些模块都是可以单独组合的。
1686 0
SpringBoot-12-之Ajax跨域访问全解析
一.什么是跨域呢? 1.引入: 先讲个故事:从前一个叫8080的大佬和一个8081的大佬各占一方天地,还有一个叫浏览器的大佬和8080还有8081关系都不错。
1180 0
新功能:日志服务命令行工具ETL发布!
日志服务命令行工具ETL发布,解决数据采集、分析查询、投递归档、外部整合过程中的数据规整痛点,提供实时、可靠、可扩展、可管理的运行模式支持,以及全面简单的ETL规则,并支持丰富的扩展支持。
3085 0
SpringBoot实战(四)之使用JDBC和Spring访问数据库
这里演示的是h2databse示例,所以简单的介绍普及下h2database相关知识 H2数据库是一个开源的关系型数据库。 H2是一个嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。
2229 0
+关注
jclian91
热爱算法,热爱技术,热爱生活,期待更好的自己与明天~
126
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载