Java个人博客系统

Spring Boot+MyBatis+Thymeleaf 个人博客系统,支持 Markdown 编写与 Editor.md 编辑、文章分类标签、评论管理与七牛云图片上传,Ehcache 缓存优化,适合 Spring Boot 入门类毕业设计。

评分:4.8/5.0
销量:25
发布:12/2/2025
难度:L3 高级

获取完整源码

演示视频仅作效果参考。完整源码、项目说明与运行答疑,请私聊沟通(适合毕业设计 / 课程设计 / 课设参考)。

获取完整源码
含项目说明文档,便于对照学习
可本地运行,适合课设演示
沟通获取后可咨询运行问题

项目概览

本项目基于 Spring Boot、MyBatis 与 Thymeleaf 开发个人博客,支持 Markdown 编写、文章管理、评论与分类标签,采用前后端不分离架构。后端 Spring Boot 1.5、MyBatis、Druid 与 Ehcache 缓存,Markdown 解析 Commonmark,图片上传七牛云 SDK。前台含文章分页、Markdown 渲染、归档与评论;后台管理文章、分类标签与评论,兼容 Hexo 路径,适合 Spring Boot 入门 Java 毕业设计。

项目说明

Java个人博客系统

项目简介

这是一个基于Spring Boot + MyBatis + Thymeleaf开发的个人博客系统,功能完善、界面简洁美观,支持Markdown文章编写、文章管理、评论管理、分类标签等核心博客功能。系统采用前后端不分离架构,适合Spring Boot初学者学习和个人博客搭建使用。

技术栈

后端技术

技术版本/说明
核心框架Spring Boot 1.5.14
持久层框架MyBatis 1.3.2
模板引擎Thymeleaf 3.0.2
数据库MySQL 5.7+
数据库连接池Druid 1.1.9
分页插件PageHelper 1.2.5
缓存框架Ehcache (Spring Boot Cache)
Markdown解析Commonmark 0.8.0
文件存储七牛云 SDK 7.2.11
API文档Swagger 2.2.2
工具类Apache Commons Lang3 3.4

前端技术

技术说明
JS框架jQuery
CSS框架Bootstrap
富文本编辑器Editor.md (Markdown编辑器)
文件上传Dropzone
弹框插件SweetAlert

第三方服务

  • 七牛云对象存储(图片/文件上传)
  • 百度统计(网站访问统计)

项目特点

  • Markdown支持:完整支持Markdown语法,支持.md文件导入
  • Hexo兼容:模仿Hexo生成的访问路径,方便从Hexo迁移
  • 后台管理:提供完善的后台管理界面,方便文章管理
  • 评论系统:内置评论功能,支持评论管理
  • 分类标签:支持文章分类和标签管理
  • 文件上传:集成七牛云存储,支持图片上传
  • 缓存优化:使用Ehcache提升访问性能
  • 响应式设计:前台界面响应式布局,适配移动端

功能模块

前台功能

1. 首页

  • 文章列表展示
  • 分页浏览
  • 文章摘要预览
  • 侧边栏(分类、标签、最新文章)

2. 文章详情

  • Markdown渲染展示
  • 文章信息(发布时间、分类、标签、浏览量)
  • 评论列表
  • 评论发表
  • 上一篇/下一篇导航

3. 文章归档

  • 按时间归档
  • 按分类浏览
  • 按标签浏览

4. 关于页面

  • 个人介绍
  • 社交链接

后台管理功能

1. 文章管理 (/admin/article)

  • 文章列表
  • 新增文章
  • 编辑文章
  • 删除文章
  • Markdown编辑器
  • 文章发布/草稿
  • 设置分类和标签
  • 上传封面图

2. 评论管理 (/admin/comments)

  • 评论列表
  • 评论审核
  • 评论删除
  • 评论回复

3. 分类管理 (/admin/category)

  • 分类列表
  • 新增分类
  • 编辑分类
  • 删除分类

4. 标签管理 (/admin/tag)

  • 标签列表
  • 新增标签
  • 编辑标签
  • 删除标签

5. 文件管理 (/admin/attach)

  • 文件列表
  • 文件上传(本地/七牛云)
  • 文件删除

6. 系统设置 (/admin/setting)

  • 网站标题
  • 网站描述
  • 网站备案号
  • 社交链接配置
  • 百度统计配置
  • Google验证配置

7. 操作日志 (/admin/logs)

  • 系统操作记录
  • 登录日志
  • 操作时间/IP记录

项目结构

java-blog/
├── src/
│   └── main/
│       ├── java/
│       │   └── com/wip/
│       │       ├── config/              # 配置类
│       │       │   ├── WebMvcConfig.java    # MVC配置
│       │       │   ├── CacheConfig.java     # 缓存配置
│       │       │   └── SwaggerConfig.java   # Swagger配置
│       │       ├── controller/         # 控制器
│       │       │   ├── admin/          # 后台控制器
│       │       │   │   ├── ArticleController.java
│       │       │   │   ├── CategoryController.java
│       │       │   │   ├── CommentController.java
│       │       │   │   ├── AttachController.java
│       │       │   │   └── SettingController.java
│       │       │   └── home/           # 前台控制器
│       │       │       ├── IndexController.java
│       │       │       └── ArticleController.java
│       │       ├── dao/                # 数据访问层
│       │       │   ├── AttachDao.java
│       │       │   ├── CommentDao.java
│       │       │   ├── ContentDao.java
│       │       │   ├── LogDao.java
│       │       │   ├── MetaDao.java
│       │       │   ├── OptionDao.java
│       │       │   └── UserDao.java
│       │       ├── model/              # 实体类
│       │       │   ├── AttachDomain.java
│       │       │   ├── CommentDomain.java
│       │       │   ├── ContentDomain.java
│       │       │   ├── LogDomain.java
│       │       │   ├── MetaDomain.java
│       │       │   └── UserDomain.java
│       │       ├── service/            # 业务逻辑层
│       │       │   ├── IArticleService.java
│       │       │   ├── ICommentService.java
│       │       │   ├── IMetaService.java
│       │       │   ├── IAttachService.java
│       │       │   └── impl/           # 实现类
│       │       ├── utils/              # 工具类
│       │       │   ├── TaleUtils.java
│       │       │   ├── DateKit.java
│       │       │   ├── IPKit.java
│       │       │   └── MarkdownUtils.java
│       │       ├── interceptor/        # 拦截器
│       │       │   └── BaseInterceptor.java
│       │       └── MyBlogApplication.java  # 启动类
│       │
│       └── resources/
│           ├── mapper/                 # MyBatis映射文件
│           │   ├── AttachMapper.xml
│           │   ├── CommentMapper.xml
│           │   ├── ContentMapper.xml
│           │   ├── LogMapper.xml
│           │   ├── MetaMapper.xml
│           │   └── UserMapper.xml
│           ├── static/                 # 静态资源
│           │   ├── admin/              # 后台静态资源
│           │   │   ├── css/
│           │   │   ├── js/
│           │   │   └── plugins/
│           │   └── user/               # 前台静态资源
│           │       ├── css/
│           │       ├── js/
│           │       └── img/
│           ├── templates/              # Thymeleaf模板
│           │   ├── admin/              # 后台页面
│           │   │   ├── article_edit.html
│           │   │   ├── article_list.html
│           │   │   ├── comment_list.html
│           │   │   ├── category.html
│           │   │   ├── attach.html
│           │   │   ├── setting.html
│           │   │   └── login.html
│           │   └── themes/             # 前台主题
│           │       └── default/
│           │           ├── index.html
│           │           ├── post.html
│           │           ├── archive.html
│           │           └── about.html
│           ├── application.yml         # 主配置文件
│           ├── application-dev.yml     # 开发环境配置
│           └── application-prod.yml    # 生产环境配置
│
├── upload/                             # 本地上传文件目录
├── lu_tale.sql                         # 数据库SQL文件
├── pom.xml                             # Maven配置
├── README.md                           # 项目说明
└── 个人博客.mp4                         # 演示视频

数据库设计

核心数据表

1. t_users - 用户表

uid          INT          用户ID
username     VARCHAR(32)  用户名
password     VARCHAR(64)  密码(MD5加密)
email        VARCHAR(200) 邮箱
screenName   VARCHAR(32)  昵称
homeUrl      VARCHAR(200) 个人主页
created      INT          创建时间
groupName    VARCHAR(16)  用户组

2. t_contents - 文章表

cid          INT          文章ID
title        VARCHAR(200) 文章标题
titlePic     VARCHAR(55)  封面图
slug         VARCHAR(200) 文章路径
created      INT          创建时间
modified     INT          修改时间
content      TEXT         文章内容
authorId     INT          作者ID
type         VARCHAR(16)  类型(post/page)
status       VARCHAR(16)  状态(publish/draft)
tags         VARCHAR(200) 标签
categories   VARCHAR(200) 分类
hits         INT          浏览量
commentsNum  INT          评论数
allowComment TINYINT      允许评论

3. t_comments - 评论表

coid         INT          评论ID
cid          INT          文章ID
created      INT          评论时间
author       VARCHAR(200) 评论者
authorId     INT          评论者ID
mail         VARCHAR(200) 邮箱
url          VARCHAR(200) 网址
ip           VARCHAR(64)  IP地址
content      TEXT         评论内容
status       VARCHAR(16)  状态(approved/waiting)
parent       INT          父评论ID

4. t_metas - 分类/标签表

mid          INT          ID
name         VARCHAR(200) 名称
slug         VARCHAR(200) 路径
type         VARCHAR(32)  类型(category/tag)
description  VARCHAR(200) 描述
sort         INT          排序

5. t_relationships - 关联表

cid          INT          文章ID
mid          INT          分类/标签ID

6. t_attach - 附件表

id           INT          附件ID
fname        VARCHAR(100) 文件名
ftype        VARCHAR(50)  文件类型
fkey         TEXT         文件路径
authorId     INT          上传者ID
created      INT          上传时间

7. t_options - 系统配置表

name         VARCHAR(32)  配置名
value        VARCHAR(1000) 配置值
description  VARCHAR(200) 描述

8. t_logs - 操作日志表

id           INT          日志ID
action       VARCHAR(100) 操作
data         VARCHAR(2000) 数据
authorId     INT          操作者ID
ip           VARCHAR(20)  IP地址
created      INT          操作时间

运行环境要求

开发环境

  • JDK 1.8+
  • Maven 3.0+
  • MySQL 5.7+
  • IDE(推荐IntelliJ IDEA或Eclipse)

生产环境

  • JDK 1.8+
  • MySQL 5.7+
  • Tomcat 8.0+(可选,Spring Boot内置)

快速开始

1. 克隆项目

git clone <repository-url>
cd java-blog

2. 创建数据库

CREATE DATABASE lu_tale CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

3. 导入数据库

mysql -u root -p lu_tale < lu_tale.sql

4. 修改配置

编辑 src/main/resources/application-dev.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/lu_tale?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root          # 修改为你的数据库用户名
    password: root          # 修改为你的数据库密码
    driver-class-name: com.mysql.jdbc.Driver

5. 配置七牛云(可选)

如需使用七牛云存储,编辑配置文件添加:

qiniu:
  access-key: your_access_key
  secret-key: your_secret_key
  bucket: your_bucket_name
  domain: your_domain

6. 编译运行

方式一:IDE运行

  1. 使用IDE导入Maven项目
  2. 运行 MyBlogApplication.java 主类

方式二:Maven命令运行

# 编译打包
mvn clean package

# 运行
java -jar target/springboot-blog-1.0.0-SNAPSHOT.jar

方式三:Maven插件运行

mvn spring-boot:run

7. 访问系统

配置说明

端口配置

修改 application.yml

server:
  port: 8888  # 修改为你想要的端口

文件上传配置

# 本地上传路径
upload:
  path: /path/to/upload/  # 修改为你的上传目录

缓存配置

系统使用Ehcache作为缓存,配置文件位于 src/main/resources/ehcache.xml

日志配置

日志配置位于 application.yml

logging:
  level:
    com.wip: debug
    org.springframework: info

使用指南

1. 发布文章

  1. 登录后台管理系统
  2. 点击"文章管理" → "发布文章"
  3. 填写文章标题
  4. 使用Markdown编辑器编写内容
  5. 选择分类和标签
  6. 上传封面图(可选)
  7. 点击"发布"

2. 导入Markdown文件

  1. 进入"文章管理"
  2. 点击"导入文章"
  3. 选择.md文件
  4. 系统自动解析并创建文章

3. 管理评论

  1. 进入"评论管理"
  2. 查看所有评论
  3. 可以删除或回复评论

4. 设置分类和标签

  1. 进入"分类管理"或"标签管理"
  2. 添加新的分类/标签
  3. 编辑或删除现有分类/标签

5. 系统设置

  1. 进入"系统设置"
  2. 配置网站基本信息
  3. 设置社交链接
  4. 配置统计代码

主要功能实现

Markdown渲染

使用Commonmark库实现Markdown解析:

// MarkdownUtils.java
public static String mdToHtml(String markdown) {
    Parser parser = Parser.builder().build();
    Node document = parser.parse(markdown);
    HtmlRenderer renderer = HtmlRenderer.builder().build();
    return renderer.render(document);
}

文章分页

使用PageHelper实现分页:

PageHelper.startPage(page, limit);
List<ContentDomain> articles = contentDao.getArticles();
PageInfo<ContentDomain> pageInfo = new PageInfo<>(articles);

缓存使用

使用Spring Cache注解:

@Cacheable(value = "articleCache", key = "#cid")
public ContentDomain getArticleById(Integer cid) {
    return contentDao.selectByKey(cid);
}

文件上传

支持本地和七牛云两种方式:

// 本地上传
public String uploadLocal(MultipartFile file) {
    String fileName = file.getOriginalFilename();
    String filePath = uploadPath + fileName;
    file.transferTo(new File(filePath));
    return filePath;
}

// 七牛云上传
public String uploadQiniu(MultipartFile file) {
    Auth auth = Auth.create(accessKey, secretKey);
    String token = auth.uploadToken(bucket);
    Response response = uploadManager.put(file.getBytes(), fileName, token);
    return domain + fileName;
}

扩展建议

如需进一步完善项目,可考虑以下扩展:

  1. 用户系统:支持用户注册、登录、个人中心
  2. 文章搜索:集成Elasticsearch实现全文搜索
  3. RSS订阅:生成RSS feed
  4. SEO优化:添加sitemap、robots.txt
  5. 社交分享:集成社交媒体分享功能
  6. 邮件通知:评论通知、订阅通知
  7. 多主题支持:支持切换不同主题
  8. Markdown增强:支持更多Markdown扩展语法
  9. 图片压缩:上传时自动压缩图片
  10. 访问统计:更详细的访问统计分析

注意事项

  1. 首次运行需要导入SQL文件创建数据库表
  2. 默认管理员密码为123456,建议首次登录后修改
  3. 生产环境建议使用HTTPS
  4. 定期备份数据库数据
  5. 上传文件建议使用七牛云等对象存储服务
  6. 注意配置文件中的敏感信息安全

常见问题

Q: 数据库连接失败?

A: 检查MySQL服务是否启动,数据库配置是否正确

Q: 图片无法显示?

A: 检查上传路径配置,确保目录有写入权限

Q: 后台无法登录?

A: 确认数据库中users表有管理员账号,密码是否正确

Q: Markdown渲染异常?

A: 检查Commonmark依赖是否正确引入

Q: 缓存不生效?

A: 检查Ehcache配置,确保缓存注解正确使用

演示视频

项目包含演示视频文件:个人博客.mp4,展示了系统的完整功能。

适用对象

  • Spring Boot初学者:综合运用Spring Boot核心知识
  • 博客搭建者:快速搭建个人博客网站
  • Hexo用户:提供后台管理界面,兼容Hexo路径
  • 学习者:学习完整的Web项目开发流程

许可证

本项目仅供学习交流使用,请勿用于商业用途。


如有问题,欢迎提Issue或联系作者。

祝使用愉快! 📝✨

获取完整源码

技术分类

包含内容

完整源码
项目说明文档
演示材料

适合方向

适合 Spring Boot+Thymeleaf 单体应用、个人博客系统方向课程设计,以及 Markdown 内容管理 Java 毕业设计参考。

关于 AI源码

AI源码 整理计算机毕业设计、课程设计向的可运行项目参考,含说明文档与演示材料。完整源码请通过联系方式沟通获取。

QQ: 861077046
邮箱: 861077046@qq.com
已帮助 25+ 位同学完成选题参考
问能不能做我的题目

相关推荐

查看全部 →
电影购票网站
进阶·新上架

电影购票网站

PC 端电影在线购票演示网站,原生 HTML+CSS+JS 单页多视图,含热映列表、场次选择、7×8 可视化选座、订单确认与 localStorage 持久化,无需后端。

HTML大作业
4.869
妲己主题站
高级·新上架

妲己主题站

王者荣耀英雄妲己主题静态小站,以「愿照众生和」黑金视觉为基调,含首页 12 套皮肤 hover 换肤、皮肤图鉴、技能铭文出装、英雄故事、攻略视频与 31 条福愿语音等七页,HTML+CSS 为主,适合前端静态页毕业设计。

HTML大作业
4.871
精美风的音乐网站
高级

精美风的音乐网站

精美风在线音乐网站毕业设计,Spring Boot + 双 Vue 端(用户前台 + 管理后台),支持在线播放、歌词同步、歌单评论收藏与后台数据统计,界面现代体验佳。

SpringBootVue2MySQL
4.864
IT新技术与创新小程序
进阶

IT新技术与创新小程序

IT 新技术与创新展示微信小程序,涵盖 AI、区块链、5G、量子计算等前沿技术介绍、创新案例与趋势分析,纯前端 Mock,科技蓝 UI,适合 IT 科普类毕业设计。

小程序
4.890
视频播放网站
高级

视频播放网站

视频播放网站毕业设计(Vue2 基础版),Node.js Express + FFmpeg HLS 切片转码,支持大文件上传、分类管理与在线 m3u8 流媒体播放。

NodeVue2MySQL
4.828
在线视频聊天项目说明
高级·新上架

在线视频聊天项目说明

基于 WebRTC P2P 的多人视频聊天室,Vue3 + TypeScript + Express + Socket.IO 实现信令转发与房间管理,含屏幕共享、设备切换、图片编辑与视频录制等完整功能。

NodeHTML
4.881