Java个人博客系统

发布时间:2026/9/7 21:00:58
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

相关新闻