Java个人博客系统

发布时间:2026/11/5 5:32:24

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.11API文档Swagger 2.2.2工具类Apache Commons Lang3 3.4前端技术技术说明JS框架jQueryCSS框架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/pagestatusVARCHAR(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父评论ID4. t_metas - 分类/标签表midINTID nameVARCHAR(200)名称 slugVARCHAR(200)路径typeVARCHAR(32)类型category/tag descriptionVARCHAR(200)描述 sortINT排序5. t_relationships - 关联表cidINT文章ID midINT分类/标签ID6. 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.8Maven 3.0MySQL 5.7IDE推荐IntelliJ IDEA或Eclipse生产环境JDK 1.8MySQL 5.7Tomcat 8.0可选Spring Boot内置快速开始1. 克隆项目gitclonerepository-urlcdjava-blog2. 创建数据库CREATEDATABASElu_taleCHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;3. 导入数据库mysql-uroot-plu_talelu_tale.sql4. 修改配置编辑src/main/resources/application-dev.ymlspring:datasource:url:jdbc:mysql://localhost:3306/lu_tale?useUnicodetruecharacterEncodingutf-8useSSLfalseusername:root# 修改为你的数据库用户名password:root# 修改为你的数据库密码driver-class-name:com.mysql.jdbc.Driver5. 配置七牛云可选如需使用七牛云存储编辑配置文件添加qiniu:access-key:your_access_keysecret-key:your_secret_keybucket:your_bucket_namedomain:your_domain6. 编译运行方式一IDE运行使用IDE导入Maven项目运行MyBlogApplication.java主类方式二Maven命令运行# 编译打包mvn clean package# 运行java-jartarget/springboot-blog-1.0.0-SNAPSHOT.jar方式三Maven插件运行mvn spring-boot:run7. 访问系统前台地址http://localhost:8888后台地址http://localhost:8888/admin默认账号用户名admin密码123456配置说明端口配置修改application.ymlserver:port:8888# 修改为你想要的端口文件上传配置# 本地上传路径upload:path:/path/to/upload/# 修改为你的上传目录缓存配置系统使用Ehcache作为缓存配置文件位于src/main/resources/ehcache.xml日志配置日志配置位于application.ymllogging:level:com.wip:debugorg.springframework:info使用指南1. 发布文章登录后台管理系统点击文章管理 → “发布文章”填写文章标题使用Markdown编辑器编写内容选择分类和标签上传封面图可选点击发布2. 导入Markdown文件进入文章管理点击导入文章选择.md文件系统自动解析并创建文章3. 管理评论进入评论管理查看所有评论可以删除或回复评论4. 设置分类和标签进入分类管理或标签管理添加新的分类/标签编辑或删除现有分类/标签5. 系统设置进入系统设置配置网站基本信息设置社交链接配置统计代码主要功能实现Markdown渲染使用Commonmark库实现Markdown解析// MarkdownUtils.javapublicstaticStringmdToHtml(Stringmarkdown){ParserparserParser.builder().build();Nodedocumentparser.parse(markdown);HtmlRendererrendererHtmlRenderer.builder().build();returnrenderer.render(document);}文章分页使用PageHelper实现分页PageHelper.startPage(page,limit);ListContentDomainarticlescontentDao.getArticles();PageInfoContentDomainpageInfonewPageInfo(articles);缓存使用使用Spring Cache注解Cacheable(valuearticleCache,key#cid)publicContentDomaingetArticleById(Integercid){returncontentDao.selectByKey(cid);}文件上传支持本地和七牛云两种方式// 本地上传publicStringuploadLocal(MultipartFilefile){StringfileNamefile.getOriginalFilename();StringfilePathuploadPathfileName;file.transferTo(newFile(filePath));returnfilePath;}// 七牛云上传publicStringuploadQiniu(MultipartFilefile){AuthauthAuth.create(accessKey,secretKey);Stringtokenauth.uploadToken(bucket);ResponseresponseuploadManager.put(file.getBytes(),fileName,token);returndomainfileName;}扩展建议如需进一步完善项目可考虑以下扩展用户系统支持用户注册、登录、个人中心文章搜索集成Elasticsearch实现全文搜索RSS订阅生成RSS feedSEO优化添加sitemap、robots.txt社交分享集成社交媒体分享功能邮件通知评论通知、订阅通知多主题支持支持切换不同主题Markdown增强支持更多Markdown扩展语法图片压缩上传时自动压缩图片访问统计更详细的访问统计分析注意事项首次运行需要导入SQL文件创建数据库表默认管理员密码为123456建议首次登录后修改生产环境建议使用HTTPS定期备份数据库数据上传文件建议使用七牛云等对象存储服务注意配置文件中的敏感信息安全常见问题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
延伸阅读

更多相关文章

2026/10/24 10:41:46

网站崩了是什么原因?八类故障和它们各自的数据特征

摘要:网站崩溃从来不是单一原因。根据公开研究和行业报告,流量过载、代码变更、数据库瓶颈、第三方依赖故障、DDoS 攻击、DNS/CDN 异常、基础设施故障和前端问题是最常见的八类根因。每一类故障在监控数据上都有可识别的特征,掌握这些特征&am…

2026/11/4 13:44:30

社区论坛系统

社区论坛系统 代码地址:https://www.aiyuanma.vip/posts/java-community-forum 项目简介 豆宝社区是一个基于SpringBoot Vue技术栈开发的前后端分离多用户社区论坛系统。本项目类似简版的掘金技术社区,实现了用户注册、登录、发帖、回帖、评论、关注、用户中心等…

2026/11/5 3:46:34

Feed流场景下二级缓存设计:Caffeine与Redis的实战指南

1. Feed流场景下,为什么单层缓存扛不住1.1 Feed流读多写少的“骗局”:你以为的读多写少,其实是读热点写分散今天这篇是Feed流缓存设计系列的第5天,聊的是二级缓存。先说个容易被新手忽略的事实:Feed流确实是典型的读多…

2026/11/5 5:27:56

FDE如何从一个陌生行业中,找到10个值得落地的AI场景?

从行业研究、业务流程拆解到场景评估,一套可复用的企业AI机会发现方法论 作者|FDE前线 当AI Agent、RAG、工作流自动化等技术逐渐成熟,企业AI落地的一个重要问题正在发生变化:技术人员已经能够较快地搭建应用原型,但…

2026/11/5 5:27:56

小白也能看懂:用RAG让大模型准确回答问题的5个关键步骤

本文介绍了RAG(检索增强生成)技术的核心原理,即通过分片、索引、召回、重排、生成五步链路,让大模型基于可靠证据回答问题。文章强调知识库效果不仅取决于大模型本身,更在于前端的检索链路优化,并提供了排查…

2026/11/5 5:27:56

SAP SRM数字化采购解决方案

绑定资源目录:IBM供应链咨询:供应链管理流程、痛点、策略与干系人分析(83页).pptx 中国石化一体化供应链与物流平台建设总体方案设计_v2.4[153页].pptx 制造业采购供应链及财务管控业务流程蓝图规划【 171】.pptx 制造集团企业供应…

2026/11/5 5:22:56

jasna:1080p 视频马赛克修复 34 秒完成,显存峰值不到 6 GB

jasna:1080p 视频马赛克修复 34 秒完成,显存峰值不到 6 GB 【免费下载链接】jasna Video restoration tool 项目地址: https://gitcode.com/GitHub_Trending/ja/jasna 一段 3 分 22 秒的 1080p 视频,把画面里每一处马赛克(…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑