源码地址:
axinawang/oebloghttps://gitee.com/axinawang/oeblog
一、系统演示与概述
1.演示
项目:简易的博客系统
2.系统功能介绍
前端使用Spring Boot支持的模板引擎Thymeleaf+jQuery完成页面信息展示
后端使用Spring MVC+Spring Boot+MyBatis框架进行整合开发
3.项目效果预览
前台首页
文章详情页
文章评论页
后台首页
后台文件编辑页面
后台文章管理列表页面
二、项目设计
1.系统开发及运行环境
操作系统:Windows
Java开发包:JDK 8
项目管理工具:Maven 3.6.0
项目开发工具:eclipse 或 IntelliJ IDEA
数据库:MySQL
缓存管理工具:Redis 3.2.100
浏览器:谷歌浏览器
2.文件组织结构
3.数据库设计
文章详情表t_article
字段名 | 类型 | 长度 | 是否为主键 | 说明 |
id | int | 11 | 是 | 文章id |
title | varchar | 50 | 否 | 文章标题 |
content | longtext | 否 | 文章内容 | |
created | date | 否 | 创建时间 | |
modified | date | 否 | 修改时间 | |
categories | varchar | 200 | 否 | 文章分类 |
tags | varchar | 200 | 否 | 文章标签 |
allow_comment | tinyint | 1 | 否 | 是否允许评论(默认1) |
thumbnail | varchar | 200 | 否 | 文章缩略图 |
文章评论表t_comment
字段名 | 类型 | 长度 | 是否为主键 | 说明 |
id | int | 11 | 是 | 评论id |
article_id | int | 11 | 否 | 评论关联的文章id |
created | date |
| 否 | 创建时间 |
ip | varchar | 200 | 否 | 评论用户所在ip |
content | text |
| 否 | 评论内容 |
status | varchar | 200 | 否 | 评论状态(默认approved) |
author | varchar | 200 | 否 | 评论作者名 |
文章统计表t_statistic
字段名 | 类型 | 长度 | 是否为主键 | 说明 |
id | int | 11 | 是 | 文章统计id |
article_id | int | 11 | 否 | 文章id |
hits | int | 11 | 否 | 文章点击量 |
comments_num | int | 11 | 否 | 文章评论量 |
用户信息表t_user
字段名 | 类型 | 长度 | 是否为主键 | 说明 |
id | int | 11 | 是 | 用户id |
username | varchar | 200 | 否 | 用户名 |
password | varchar | 200 | 否 | 用户密码(加密后的密码) |
| varchar | 200 | 否 | 用户邮箱 |
created | date | 否 | 创建时间 | |
valid | tinyint | 1 | 否 | 是否为有效用户(默认1) |
用户权限表authority
字段名 | 类型 | 长度 | 是否为主键 | 说明 |
id | int | 11 | 是 | 权限id |
authority | varchar | 200 | 否 | 权限以ROLE_开头 |
用户权限关联表t_user_authority
字段名 | 类型 | 长度 | 是否为主键 | 说明 |
id | int | 11 | 是 | 关联表主键id |
user_id | int | 11 | 否 | 用户id |
authority_id | int | 11 | 否 | 权限id |
三、准备数据库资源
创建一个名称为blog_system的数据库,并选择该数据库,点击axinawang/oeblog,去下载源码,在每个项目下的resources都有blog_system.sql文件,执行这个脚本文件,结果如下:
四、准备项目环境
1.创建Spring Boot项目,引入依赖文件
项目名称:blog_system,包名:域名反写+项目名
<!-- 阿里巴巴的Druid数据源依赖启动器 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!-- MyBatis依赖启动器 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!-- MySQL数据库连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Redis服务启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- mail邮件服务启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- thymeleaf模板整合security控制页面安全访问依赖 -->
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>
<!-- Spring Security依赖启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- Thymeleaf模板引擎启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Web服务启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>
<!-- String工具类包-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- Markdown处理html -->
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark</artifactId>
<version>0.11.0</version>
</dependency>
<!-- Markdown处理表格 -->
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark-ext-gfm-tables</artifactId>
<version>0.11.0</version>
</dependency>
<!-- 过滤emoji表情字符 -->
<dependency>
<groupId>com.vdurmont</groupId>
<artifactId>emoji-java</artifactId>
<version>4.0.0</version>
</dependency>
<!-- devtools热部署工具 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Spring Boot测试服务启动器 -->
2.编写配置文件(注意有六个#的注释,其下的属性可能需要修改)
a.将application.properties全局配置文件更名为application.yml
server:
port: 8081
spring:
profiles:
# 外置jdbc、redis和mail配置文件
active: jdbc,redis,mail,test
# 关闭thymeleaf页面缓存
thymeleaf:
cache: false
# 配置国际化资源文件
messages:
basename: i18n.logo
# MyBatis配置
mybatis:
configuration:
#开启驼峰命名匹配映射
map-underscore-to-camel-case: true
#控制台打印日志,能打印出被扫描的包和被解析的映射文件
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#配置MyBatis的xml映射文件路径
mapper-locations: classpath:mapper/*.xml
#######配置XML映射文件中指定的实体类别名路径
type-aliases-package: com.itheima.myblog.model.domain
######mybatis日志显示SQL
logging:
level:
com.itheima.myblog.mapper: debug
#pagehelper分页设置
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
#浏览器cookie相关设置
COOKIE:
# 设置cookie默认时长为30分钟
VALIDITY: 1800
b.创建application-jdbc.properties
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
spring.datasource.initialSize=20
spring.datasource.minIdle=10
spring.datasource.maxActive=100
#MySQL在高版本需要指明是否进行SSL连接
spring.datasource.url=jdbc:mysql://localhost:3306/blog_system?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
#######修改为你的密码
spring.datasource.password=root
c.创建application-mail.properties
######
spring.mail.host=smtp.sina.com
######
spring.mail.port=587
######
spring.mail.username=lxtestemail@sina.com
######改为授权码
spring.mail.password=32433bbe46d209a1
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.connectiontimeout=5000
######读超时可能设得不够长,会导致邮件发送失败
spring.mail.properties.mail.smtp.timeout=10000
spring.mail.properties.mail.smtp.writetimeout=5000
d.创建application-redis.properties
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
3.前端资源引入
comments.html:两处logoutform改为logoutform2
4、后端基础代码引入
报错:References to interface static methods are allowed only at source level 1.8
Pom文件的properties标签中添加
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>