Java个人博客系统
2026/9/7 21:00:43 网站建设 项目流程

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 - 用户表
uidINT用户ID usernameVARCHAR(32)用户名 passwordVARCHAR(64)密码(MD5加密) emailVARCHAR(200)邮箱 screenNameVARCHAR(32)昵称 homeUrlVARCHAR(200)个人主页 createdINT创建时间 groupNameVARCHAR(16)用户组
2. t_contents - 文章表
cidINT文章ID titleVARCHAR(200)文章标题 titlePicVARCHAR(55)封面图 slugVARCHAR(200)文章路径 createdINT创建时间 modifiedINT修改时间 contentTEXT文章内容 authorIdINT作者IDtypeVARCHAR(16)类型(post/page)statusVARCHAR(16)状态(publish/draft) tagsVARCHAR(200)标签 categoriesVARCHAR(200)分类 hitsINT浏览量 commentsNumINT评论数 allowCommentTINYINT允许评论
3. t_comments - 评论表
coidINT评论ID cidINT文章ID createdINT评论时间 authorVARCHAR(200)评论者 authorIdINT评论者ID mailVARCHAR(200)邮箱 urlVARCHAR(200)网址 ipVARCHAR(64)IP地址 contentTEXT评论内容statusVARCHAR(16)状态(approved/waiting) parentINT父评论ID
4. t_metas - 分类/标签表
midINTID nameVARCHAR(200)名称 slugVARCHAR(200)路径typeVARCHAR(32)类型(category/tag) descriptionVARCHAR(200)描述 sortINT排序
5. t_relationships - 关联表
cidINT文章ID midINT分类/标签ID
6. t_attach - 附件表
idINT附件ID fnameVARCHAR(100)文件名 ftypeVARCHAR(50)文件类型 fkeyTEXT文件路径 authorIdINT上传者ID createdINT上传时间
7. t_options - 系统配置表
nameVARCHAR(32)配置名valueVARCHAR(1000)配置值 descriptionVARCHAR(200)描述
8. t_logs - 操作日志表
idINT日志IDactionVARCHAR(100)操作dataVARCHAR(2000)数据 authorIdINT操作者ID ipVARCHAR(20)IP地址 createdINT操作时间

运行环境要求

开发环境

  • 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. 克隆项目

gitclone<repository-url>cdjava-blog

2. 创建数据库

CREATEDATABASElu_taleCHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;

3. 导入数据库

mysql-uroot-plu_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=falseusername:root# 修改为你的数据库用户名password:root# 修改为你的数据库密码driver-class-name:com.mysql.jdbc.Driver

5. 配置七牛云(可选)

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

qiniu:access-key:your_access_keysecret-key:your_secret_keybucket:your_bucket_namedomain:your_domain

6. 编译运行

方式一:IDE运行
  1. 使用IDE导入Maven项目
  2. 运行MyBlogApplication.java主类
方式二:Maven命令运行
# 编译打包mvn clean package# 运行java-jartarget/springboot-blog-1.0.0-SNAPSHOT.jar
方式三:Maven插件运行
mvn spring-boot:run

7. 访问系统

  • 前台地址:http://localhost:8888
  • 后台地址:http://localhost:8888/admin
  • 默认账号
    • 用户名:admin
    • 密码:123456

配置说明

端口配置

修改application.yml

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

文件上传配置

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

缓存配置

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

日志配置

日志配置位于application.yml

logging:level:com.wip:debugorg.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.javapublicstaticStringmdToHtml(Stringmarkdown){Parserparser=Parser.builder().build();Nodedocument=parser.parse(markdown);HtmlRendererrenderer=HtmlRenderer.builder().build();returnrenderer.render(document);}

文章分页

使用PageHelper实现分页:

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

缓存使用

使用Spring Cache注解:

@Cacheable(value="articleCache",key="#cid")publicContentDomaingetArticleById(Integercid){returncontentDao.selectByKey(cid);}

文件上传

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

// 本地上传publicStringuploadLocal(MultipartFilefile){StringfileName=file.getOriginalFilename();StringfilePath=uploadPath+fileName;file.transferTo(newFile(filePath));returnfilePath;}// 七牛云上传publicStringuploadQiniu(MultipartFilefile){Authauth=Auth.create(accessKey,secretKey);Stringtoken=auth.uploadToken(bucket);Responseresponse=uploadManager.put(file.getBytes(),fileName,token);returndomain+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或联系作者。

祝使用愉快!📝✨

  • 完整代码:https://www.aiyuanma.vip/posts/java-blog

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询