NexT主题下,用Leancloud统计文章阅读量

1. 配置步骤

1.1 注册LeanCloud账号

1.2 创建应用

创建应用


1.3 新应用名称(自定义) → 开发版创建即可

这里写图片描述


1.4 创建Class

  • 在创建的应用上点击存储
    这里写图片描述
  • 数据栏中,_开头的都是系统预定义好的表,为了区分,新建一张表来保存数据。为了保证对NexT主题的修改兼容,新建Class名字必须为Counter。为了避免权限问题导致 次数统计显示不正常,选择无限制,创建Class。
    这里写图片描述

1.5 获取App IDApp Key

  • Class创建完成后,选择界面最左侧的设置应用Key,复制App IDApp Key
    这里写图片描述
  • 打开博客根目录/themes/next/下的_config.yml,查找leancloud,填写复制来的App IDApp Key,重新生成、部署博客即可正常统计文章阅读量。
    这里写图片描述

2. 附赠说明

  • 因为AppID以及AppKey是暴露在外的,为了确保只用于我们自己的博客,建议设置Web安全域名,填入自己的博客域名
    这里写图片描述

  • 记录文章访问量的唯一标识符是文章的发布日期文章的标题,因此请确保这两个数值组合的唯一性,如果更改了这两个数值,会造成文章阅读数值的清零重计

  • 初始的文章统计量显示为0。在配置好阅读量统计服务之后,第一次打开博文时,会自动向服务器发送数据,该数据会被记录在对应的应用的Counter表中。

  • 修改Counter表中的time字段的数值,可以修改文章的访问量。双击具体的数值,修改之后回车即可保存。

参考博客:为NexT主题添加文章阅读量统计功能

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要根据IP统计文章浏览,需要在Java web应用中使用Servlet技术和数据库技术。 以下是一个简单的示例: 1. 在MySQL数据库中创建一张表,用于存储文章的浏览统计信息。表结构如下: ```sql CREATE TABLE article_view_count ( article_id INT NOT NULL, ip VARCHAR(15) NOT NULL, view_count INT DEFAULT 0, PRIMARY KEY (article_id, ip) ); ``` 2. 在Java web项目中编写一个Servlet,用于处理文章浏览请求。在Servlet中,可以通过request对象获取客户端的IP地址,并将IP地址和文章ID存入数据库中。代码示例: ```java @WebServlet("/article") public class ArticleServlet extends HttpServlet { private static final String DB_URL = "jdbc:mysql://localhost:3306/mydb"; private static final String DB_USER = "root"; private static final String DB_PASSWORD = "password"; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取文章ID int articleId = Integer.parseInt(request.getParameter("id")); // 获取客户端IP String ip = request.getRemoteAddr(); // 将IP和文章ID存入数据库中 try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD)) { // 查询是否已经存在该IP对应的浏览记录 PreparedStatement ps = conn.prepareStatement( "SELECT * FROM article_view_count WHERE article_id = ? AND ip = ?"); ps.setInt(1, articleId); ps.setString(2, ip); ResultSet rs = ps.executeQuery(); if (rs.next()) { // 如果已经存在该IP对应的浏览记录,则更新浏览次数 int viewCount = rs.getInt("view_count") + 1; ps = conn.prepareStatement( "UPDATE article_view_count SET view_count = ? WHERE article_id = ? AND ip = ?"); ps.setInt(1, viewCount); ps.setInt(2, articleId); ps.setString(3, ip); ps.executeUpdate(); } else { // 如果不存在该IP对应的浏览记录,则插入新的记录 ps = conn.prepareStatement( "INSERT INTO article_view_count (article_id, ip, view_count) VALUES (?, ?, 1)"); ps.setInt(1, articleId); ps.setString(2, ip); ps.executeUpdate(); } } catch (SQLException e) { e.printStackTrace(); } // 返回文章内容 // ... } } ``` 3. 在文章页面中调用上述Servlet,获取文章浏览的信息,并显示在页面上。代码示例: ```java <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.sql.*,java.util.*" %> <% int articleId = Integer.parseInt(request.getParameter("id")); String ip = request.getRemoteAddr(); // 查询文章浏览 int viewCount = 0; try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD)) { PreparedStatement ps = conn.prepareStatement( "SELECT SUM(view_count) AS total_view_count FROM article_view_count WHERE article_id = ?"); ps.setInt(1, articleId); ResultSet rs = ps.executeQuery(); if (rs.next()) { viewCount = rs.getInt("total_view_count"); } } catch (SQLException e) { e.printStackTrace(); } %> <html> <head> <title>文章页面</title> </head> <body> <h1>文章标题</h1> <p>浏览: <%= viewCount %></p> <p>文章内容...</p> </body> </html> ``` 这样,每当有用户访问文章页面时,就会根据IP地址统计文章的浏览,并将统计信息存入数据库中。在文章页面中,可以通过查询数据库获取文章的总浏览,并显示在页面上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值