# 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实现日志打印。
- 统一异常处理,编写代码时不用关心哪里出异常,只需要不断上抛异常即可。

### 开发环境
- 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图

## 目录结构说明
```
/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
```
## 运行截图
##### 首页

##### 文章查看页

##### 代码高亮

##### Latex渲染

##### 登录页

##### 注册页

##### 管理员后台

##### 用户后台

##### 手机端首页

##### 手机端文章

##### 手机端后台

