# MyBlog
**Repository Path**: summerstudy/myblog
## Basic Information
- **Project Name**: MyBlog
- **Description**: 一个基于Spring Boot的简单博客项目
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-02-22
- **Last Updated**: 2022-02-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java, SpringBoot, MySQL, HTML, JavaScript
## README
# Spring Boot 个人博客
> Ljd
## 1、需求与功能
### 1.1 个人博客用户故事:
角色:普通访客、管理员(我)
- 访客:可以分页查看所有的博客
- 访客:可以快速查博客最多的6个分类
- 访客:可以查看所有的分类
- 访客:可以查看某个分类下的博客列表
- 访客:可以快速查看标记博客最多的10个标签
- 访客:可以查看所有的标签
- 访客:可以查看某个标签下的博客列表
- 访客:可以根据年度时间线查看博客列表
- 访客:可以快速查看最新的推荐博客
- 访客:可以用关键字全局搜索博客
- 访客:可以查看单个博客内容
- 访客:可以对博客内容进行评论
- 访客:可以赞赏博客内容
- 访客:可以微信扫码阅读博客内容
- 访客:可以在首页扫描公众号二维码关注
- 我:可以用户名和密码登录后台进行管理
- 我:可以管理博客
- 我:可以发布新博客
- 我:可以对博客进行分类
- 我:可以对博客打标签
- 我:可以修改博客
- 我:可以删除博客
- 我:可以根据标题、分类、标签查询博客
- 我:可以管理博客分类
- 我:可以新增一个分类
- 我:可以修改一个分类
- 我:可以删除一个分类
- 我:可以根据分类名称查询分类
- 我:可以管理标签
- 我:可以新增一个标签
- 我:可以修改一个标签
- 我:可以删除一个标签
- 我:可以根据名称查询一个标签
### 1.2 功能规划

## 2、页面设计与开发
### 2.1 设计
前端展示:首页、详情页、分类、标签、归档、关于我
后台管理:模板页
### 2.2 页面开发
### 2.3 插件集成
[编辑器 markdown](https://pandao.github.io/editor.md/)
[内容排版](https://typo.sofi.sh/)
[动画 animate.css](http://www.dowebok.com/demo/2014/98/)
[代码高亮 prism](https://prismjs.com/)
[滚动侦测 waypoints](http://imakewebthings.com/waypoints/)
平滑滚动 jquery.scrollTo
**CDN**
```html
```
[目录生成 Tocbot](http://tscanlin.github.io/tocbot/)
[二维码生成 qrcode.js](http://davidshimjs.github.io/qrcodejs/)
## 3、框架搭建
### 3.1 构建与配置
- 引入Spring Boot模块
- web
- Thymeleaf
- 命名空间
```
xmlns:th="http://www.thymeleaf.org"
```
- JPA
- MySQL
- Aspects
- DevTools
### 3.2 异常处理
- 定义错误页面
- 404
- 500
- error
- 全局处理异常
- 统一处理异常
```java
@ControllerAdvice
public class ControllerExceptionInterceptor {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@ExceptionHandler(Exception.class)
public ModelAndView exception(HttpServletRequest request, Exception e) throws Exception {
ModelAndView mv = new ModelAndView();
logger.error("Request URL : {}, Exception : {}", request.getRequestURL(), e);
if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null) {
throw e;
}
mv.addObject("url", request.getRequestURL());
mv.addObject("exception", e);
mv.setViewName("error/error");
return mv;
}
}
```
### 3.3 日志处理
- 记录日志内容
- 请求url
- 访问者ip
- 问题:获取到的ip为如下
```text
ip='0:0:0:0:0:0:0:1'
```
原因:由于客户端和服务器是同一机器,所以会出现这个问题,访问时的url中有localhost
改为127.0.0.1即可


- 调用者方法classMethod
- 参数args
- 返回内容
- 记录日志类
### 3.4 页面处理
- 静态页面导入project
- thymeleaf布局
- 定义fragment
- 使用fragment布局
- 错误页面美化
## 4、设计与规范
### 4.1 实体设计
- 实体类
- 博客Blog
- 博客分类Type
- 博客标签Tag
- 博客评论Comment
- 用户User

### 4.2 应用分层

### 4.3 命名约定
- Service/DAO层命名规范
- 获取单个对象的方法用get做前缀
- 获取多个对象的方法用list做前缀
- 获取统计值的方法用count做前缀
- 插入的方法用save或者insert做前缀
- 删除的方法用remove或者delete做前缀
- 修改的方法用update做前缀
## 5、后台登陆
### 5.1 登录
- 构建登陆页面和后台管理首页
- UserService和UserRepository
- LoginController实现登录
- MD5加密
- 登录拦截器
### 5.2 分类管理
- 分类管理页面
- 分类列表分页
- 分类新增、修改、删除
### 5.3 标签管理
- 标签管理页面
- 标签列表分页
- 标签新增、修改、删除
### 5.4 博客管理
- 博客分页查询
- 博客新增
- 博客修改
- 博客删除
## 6、前端展示
### 6.1、首页展示
- 博客列表
- top分类
- top标签
- 最新博客推荐
- 博客详情
markdown转html依赖
```xml
com.atlassian.commonmark
commonmark
0.17.0
com.atlassian.commonmark
commonmark-ext-heading-anchor
0.17.0
com.atlassian.commonmark
commonmark-ext-gfm-tables
0.17.0
```
### 6.2、评论功能
- 评论信息提交与回复
- 评论信息列表展示功能
- 管理员回复评论
### 6.3、分类页
### 6.4、标签页
### 6.5、归档页
### 6.6、关于我