# OBlog **Repository Path**: weingxing/oblog ## Basic Information - **Project Name**: OBlog - **Description**: Oblog,基于Spring Boot + MyBatis + Spring Security实现的精简博客系统 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2020-09-23 - **Last Updated**: 2024-11-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Web高级开发大作业 基于SpringBoot实现的博客系统,访客可以浏览文章、发表评论,注册后可以投稿文章,投稿的文章在管理员审核后显示在博客,管理员可以管理文章、评论、用户以及进行博客信息的设置。 ### 演示信息 (服务器资源紧张,已停止运行程序,无法访问,请自行部署或查看运行截图) > http://oblog.mapletown.xyz > > 管理员账号:admin,密码:123456 > > 普通账号:test,密码:123456 > > **请不要修改密码** -------- # OBlog ## 简介 Oblog,基于Spring Boot + MyBatis + Spring Security实现的精简博客系统,前端UI框架为Layui,使用的数据库为MySQL。Spring Security控制用户权限,登陆时自动根据用户类别分配相应权限,防止普通用户访问到管理员资源。 > **项目地址:** > > gitee:https://gitee.com/weingxing/oblog > > github:https://github.com/weingxing/OBlog - 数据分页展示,防止数据量过大导致用户浏览器卡死。 - 响应式设计,支持电脑、手机不同屏幕大小的设备显示。 - 密码在数据库中使用密文存储,登陆时前后端传输的是RSA加密后的密文,一定程度上增加了用户账户的安全性。 - AOP实现日志打印。 - 统一异常处理,编写代码时不用关心哪里出异常,只需要不断上抛异常即可。 ![](./pic/架构图.jpg) ### 开发环境 - IntelliJ IDEA - Java 8 - Lombok - MySQL 5.6 > 开发时使用了Lombok,项目导入IDEA时,如果没有安装Lombok插件,会有红色波浪线错误提示 > > 使用Lombok虽然代码更简洁,但增加了代码耦合,可读性也变差了,但无奈本人太懒 o( ̄┰ ̄*)ゞ ### To-Do - [x] 数据库设计 - [x] DAO层 - [x] Service层、Controller层 - [x] 日志打印 - [x] 统一异常处理 - [x] 用户注册和用户权限管理 - [x] 文章管理 - [x] 评论管理 - [x] 用户投稿 - [ ] 使用机器学习判断垃圾评论  (未找到合适数据集) - [x] 邮件通知 - [x] 文章代码内容高亮显示 - [x] LaTex渲染支持 - [ ] MarkDown语法编辑文章 (对投稿用户可能不友好,替换为富文本编辑器) ### 功能 1. 访客浏览文章 2. 响应式,自适应电脑、手机 3. 注册、登录 4. 文章评论 5. 注册用户投稿文章 6. 文章管理 7. 评论管理 8. 文章代码高亮显示 9. 文章时间轴 10. 文章分类 11. LaTex公式渲染 12. 收到新的评论、投稿时邮件通知博主 13. 后台管理播放网易云歌单 ## 部署说明 导入sql文件(位于src/sql目录)到数据库,修改配置文件中的端口号(如果需要),数据库地址、用户名和密码,使用maven将项目打成jar包,上传至服务器,运行jar文件。 ```shell nohup java -jar 2>&1 & ``` 默认管理员账户:`admin`,密码:`123456` ## 数据库E-R图 ![](./pic/er.png) ## 目录结构说明 ``` /oblog │ .gitignore │ LICENSE │ mvnw │ mvnw.cmd │ pom.xml # Maven依赖文件 │ README.md # 说明文件 │ tree.txt # 目录树文件(tree命令生成) │ ├─.mvn │ └─wrapper │ maven-wrapper.jar │ maven-wrapper.properties │ MavenWrapperDownloader.java │ ├─pic # 截图 │ └─src # 源码 ├─main │ ├─java │ │ └─com │ │ └─oxygen │ │ └─oblog │ │ │ OBlogApplication.java # 启动类 │ │ │ │ │ ├─aop # AOP日志打印 │ │ │ LogAspect.java │ │ │ │ │ ├─config # 配置包 │ │ │ AsyncConfiguration.java # 异步方法配置 │ │ │ CommonConfig.java # 普通配置 │ │ │ ErrorPageConfig.java # 自定义404、502页面 │ │ │ MyPasswordEncoder.java # SpringSecurity密码编码器 │ │ │ RejectedExceptionFilter.java # 过滤器 │ │ │ SecurityConfig.java # SpringSecurity配置 │ │ │ TomcatConfig.java # Tomcat配置 │ │ │ │ │ ├─controller # 控制层 │ │ │ AdminController.java │ │ │ CommentController.java │ │ │ ContentController.java │ │ │ HomeController.java │ │ │ LoginController.java │ │ │ MetaController.java │ │ │ NotifyController.java │ │ │ OptionsController.java │ │ │ UserController.java │ │ │ │ │ ├─dao # 持久层 │ │ │ CommentMapper.java │ │ │ ContentMapper.java │ │ │ MetaMapper.java │ │ │ NotifyMapper.java │ │ │ OptionsMapper.java │ │ │ RightMapper.java │ │ │ UserMapper.java │ │ │ │ │ ├─dto # 数据传输实体 │ │ │ ContentInfo.java │ │ │ HomeInfo.java │ │ │ LayuiPage.java │ │ │ LogoInfo.java │ │ │ Menu.java │ │ │ MenuInfo.java │ │ │ PageRequest.java │ │ │ PageResult.java │ │ │ Response.java │ │ │ UserInfo.java │ │ │ │ │ ├─entity # 数据库实体 │ │ │ Comment.java │ │ │ Content.java │ │ │ Meta.java │ │ │ Notify.java │ │ │ Options.java │ │ │ Right.java │ │ │ User.java │ │ │ │ │ ├─exception # 异常处理 │ │ │ CustomException.java │ │ │ ErrorResponseEntity.java │ │ │ GlobalExceptionHandler.java # 全局异常处理 │ │ │ │ │ ├─service # 服务层 │ │ │ │ CommentService.java │ │ │ │ ContentService.java │ │ │ │ MetaService.java │ │ │ │ NotifyService.java │ │ │ │ OptionsService.java │ │ │ │ RightService.java │ │ │ │ SecurityService.java │ │ │ │ UserService.java │ │ │ │ │ │ │ └─impl # 服务层接口实现 │ │ │ CommentServiceImpl.java │ │ │ ContentServiceImpl.java │ │ │ MetaServiceImpl.java │ │ │ NotifyServiceImpl.java │ │ │ OptionsServiceImpl.java │ │ │ RightServiceImpl.java │ │ │ SecurityServiceImpl.java │ │ │ UserServiceImpl.java │ │ │ │ │ └─util # 工具 │ │ PageUtils.java # 分页请求工具类 │ │ RSAUtil.java # RSA加密解密类 │ │ SendMailThread.java # 邮件发送工具类 │ │ │ └─resources # 资源文件 │ │ application.yml # SpringBoot配置文件 │ │ │ ├─generator # MyBatis逆向工程配置文件 │ │ generatorConfig.xml │ │ │ ├─mapper # MyBatis SQL语句映射 │ │ CommentMapper.xml │ │ ContentMapper.xml │ │ MetaMapper.xml │ │ NotifyMapper.xml │ │ OptionsMapper.xml │ │ RightMapper.xml │ │ UserMapper.xml │ │ │ ├─static # 静态资源 │ │ │ 404.html │ │ │ 502.html │ │ │ detail.html │ │ │ │ │ ├─css # 前端样式表 │ │ │ │ ... │ │ │ │ │ │ │ ├─fonts # 前端字体 │ │ │ │ ... │ │ │ │ │ │ │ └─themes # 前端主题样式表 │ │ │ default.css │ │ │ │ │ ├─images # 前端图片资源 │ │ │ ... │ │ │ │ │ ├─js # 前端js代码 │ │ │ ... │ │ │ │ │ ├─lib # 前端框架 │ │ │ ... │ │ │ │ │ └─page # 前端页面(iframe内嵌) │ │ ... │ │ │ └─templates # 前端页面 │ about.html │ admin.html │ archives.html │ category.html │ home.html │ login.html │ register.html │ └─sql # 数据库文件 E-R图.png oblog.sql ``` ## 运行截图 ##### 首页 ![](./pic/index.png) ##### 文章查看页 ![](./pic/detail.png) ##### 代码高亮 ![](./pic/highlight.png) ##### Latex渲染 ![](./pic/detail.png) ##### 登录页 ![](./pic/login.png) ##### 注册页 ![](./pic/register.png) ##### 管理员后台 ![](./pic/admin.png) ##### 用户后台 ![](./pic/user.png) ##### 手机端首页 ![](./pic/phone.png) ##### 手机端文章 ![](./pic/phone_detail.png) ##### 手机端后台 ![](./pic/phone_admin.png) ![](./pic/phone_user.png)