# geek_blog **Repository Path**: Jngu/geek_blog ## Basic Information - **Project Name**: geek_blog - **Description**: 一个基于SpringBoot+Mybatis(MybatisPlus)+SpringSecurity+Redis+ElasticSearch的个人博客系统,源码https://github.com/AlanLiang1998/geek_blog - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: front-v2 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2020-12-02 - **Last Updated**: 2022-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### GeekBlog个人博客系统说明 #### 项目介绍 - 使用当前流行的框架组合SpringBoot+Mybatis,同时整合MybatisPlus插件取代常用的CRUD,简化开发。 - 基于RBAC模型构建权限管理模块,并集成安全框架SpringSecurity,实现用户的认证和授权。 - 使用Spring Data集成缓存中间件Redis,加快访问速度。 - 使用Spring Data集成全文搜索引擎ElasticSearch,实现文章信息的快速搜索和关键字的高亮显示。 - 前台前端使用HTTP客户端Axios进行异步请求,使用Vue完成数据的绑定和渲染,实现前后端的半分离。 - 前台静态页面来自:Hexo博客Matery主题。项目地址:https://github.com/blinkfox/hexo-theme-matery - 后台模板来自layuimini。主页:http://layuimini.99php.cn - 页面使用响应式框架:Materialize(前台)和Layui(后台),支持电脑、平板、手机等所有主流设备访问。 #### 技术栈 ##### 前端主要技术栈 - CSS框架:Materialize(前台)、Layui(后台) - JS框架:Vue(前台) - HTTP客户端:Axios - 主要插件:Echarts(数据图表)、SweetAlert2(页面弹出层)、Editormd(Markdown编辑器)、Jqcloud(标签云)、moment(日期处理类库)、zyupload(文件上传)、Lazyload(图片懒加载)、aos(页面滚动动画)、busuanzi(网站统计)等等 ##### 后端主要技术栈 - 主体框架:SpringBoot - 持久层框架:Mybatis(整合MybatisPlus插件) - 安全框架:SpringSecurity - 缓存中间件:Redis - 全文搜索引擎:ElasticSearch - 数据库:MySQL - 数据库连接池:Druid - 接口文档生成:Swagger2 - 模板引擎:Thymeleaf - 日志框架:Logback - 主要工具、插件:Lombok(简化POJO代码)、fastjson(JSON工具)、ip2region(IP查询地理位置)、hutool(Java工具集)、userAgentUtils(浏览器信息获取)、easy-captcha(图形验证码)、qiniu-java-sdk(七牛云存储sdk)等等 #### 演示地址 - 前台:http://www.alanliang.site - 后台:避免恶意删数据,这里暂不提供 #### 效果预览 前台首页1 ![前台首页1](http://cdn.alanliang.site/blog1.png) 前台首页2 ![前台首页2](http://cdn.alanliang.site/blog2.png) 前台关于我页 ![前台首页2](http://cdn.alanliang.site/blog3.png) 文章详情页 ![文章详情页](http://cdn.alanliang.site/blog4.png) 后台首页 ![后台首页](http://cdn.alanliang.site/后台首页.png) 后台页面1 ![后台页面1](http://cdn.alanliang.site/后台页面1.png) 后台页面2 ![后台页面2](http://cdn.alanliang.site/后台页面2.png) 后台页面3 ![后台页面2](http://cdn.alanliang.site/后台页面3.png) #### 主要功能与模块 本博客系统分为前台和后台两个大模块,其中后台为博客系统管理页面,前台为用户界面。 系统功能模块图如下: ![系统功能模块图](http://cdn.alanliang.site/系统功能模块图.jpg) ##### 后台功能 后台主要包括以下几个功能: - 登录功能:用户进入后台时要登录,需要输入用户名、密码和验证码,可以选择记住密码。 - 仪表盘页面:用户在仪表盘页面可以查看浏览量、评论量等各类数据的统计,系统公告,最近的访问日志和操作日志,最新的评论、留言和文章,最近7天的前后台浏览统计等。 - 用户管理:用户可以查看系统的用户信息,根据特定列进行排序,并可以输入用户名等信息进行搜索,可以添加新的用户、修改用户信息和用户状态、删除用户,可以导出和打印用户数据。 - 角色管理:用户可以查看系统的角色信息,根据特定列进行排序,并可以输入角色名等信息进行搜索,可以添加新的角色、修改角色信息和角色状态、删除角色,可以导出和打印角色数据。 - 菜单管理:用户可以查看系统的菜单信息,根据特定列进行排序,可以添加新的菜单、修改菜单信息、删除菜单。 - 访客管理:用户可以查看系统的访客信息,根据特定列进行排序,并可以输入用户名等信息进行搜索、可以修改访客状态、删除访客,可以导出和打印访客数据。 - 公告管理:用户可以查看系统的公告信息,根据特定列进行排序,并可以输入标题等信息进行搜索、可以修改公告信息、删除公告,可以导出和打印公告数据。 - 访问日志管理:用户可以查看系统的访问日志信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以删除访问日志,可以导出和打印访问日志数据。 - 操作日志管理:用户可以查看系统的操作日志信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以删除操作日志,可以导出和打印操作日志数据。 - 数据源监控功能:用户需要输入数据源的用户名和密码,可以查看数据源的相关信息。 - 本地存储管理:用户可以查看系统的本地存储的文件信息,根据特定列进行排序,并可以输入文件名等信息进行搜索,可以上传文件、修改文件信息、删除文件,可以导出和打印本地文件数据。 - 七牛云存储管理:用户可以查看系统的七牛云存储的文件信息,根据特定列进行排序,并可以输入文件名等信息进行搜索,可以上传文件、修改文件信息、删除文件,可以配置和同步七牛云存储,可以导出和打印七牛云存储文件数据。 - 接口文档功能:开发人员可以查看系统的接口开发文档并对接口进行测试。 - 文章管理:用户可以查看系统的文章信息,根据特定列进行排序,并可以输入文章标题等信息进行搜索,可以发布新的文章、修改文章信息和发布状态、审核文章、删除文章,可以导出和打印文章数据。 - 分类管理:用户可以查看系统的分类信息,根据特定列进行排序,并可以输入分类名称等信息进行搜索,可以添加新的分类、修改分类信息、删除分类,可以导出和打印分类数据。 - 标签管理:用户可以查看系统的标签信息,根据特定列进行排序,并可以输入标签名称等信息进行搜索,可以添加新的标签、修改标签信息、删除标签,可以导出和打印标签数据。 - 评论管理:用户可以查看系统的评论信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以审核评论、回复评论、删除评论,可以导出和打印评论数据。 - 留言管理:用户可以查看系统的留言信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以审核留言、回复留言、删除留言,可以导出和打印留言数据。 - 友链管理:用户可以查看系统的友情链接信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以添加新的友链、修改友链信息、审核友链、删除留言,可以导出和打印友链数据。 - 相册管理:用户可以查看系统的照片信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以添加新的照片、修改照片信息、删除照片,可以导出和打印照片数据。 ##### 前台功能 前台主要包括以下功能: - 首页:访客可以查看博主的文章概览,包括置顶文章、推荐文章。 - 文章详情页:访客可以查看文章的详细内容,文章内容有目录,代码有高亮显示和语言显示并可点击复制。访客可以对文章进行点赞、分享和评论。 - 分类展示页:访客可以查看博主的文章分类和文章分类的雷达统计图,并按照文章分类查看文章。 - 标签展示页:访客可以查看博主的文章标签和文章标签生成的标签云统计图,并按照文章标签查看文章。 - 归档展示页:访客可以查看博主的文章日历统计图,并按照时间轴查看文章。 - 关于我展示页:访客可以查看博主的个人信息和联系方式,可以查看文章的统计信息、博主的技能展示和相册。 - 友情链接页:访客可以查看博客的友情链接,可以查看留言和对博客进行留言。 - 搜索功能:访客可以根据关键字实时搜索文章,搜索支持分词,搜索结果中关键字高亮显示。 - 网站统计功能:网站底部显示访问量、访问人数和运行时间。 - 访客注册登录功能:访客评论文章前需要注册,评论文章时需要登录。 #### 数据库设计 数据库模型图如下: ![数据库模型](http://cdn.alanliang.site/datebase_model.jpg) #### 配置环境要求 该项目需要安装以下软件: JDK版本:JDK8 集成开发环境:IntelliJ IDEA Redis版本:Redis ElasticSearch版本:ElasticSearch 6.8.7**(另需安装对应版本的IK分词器)** MySQL版本:5.6 Maven版本:Maven #### 使用说明 ##### 1、确保环境所需软件已经安装成功 为了避免无法意料的错误,特别注意ElasticSearch版本必须为6.8.7,并且安装对应版本的IK分词(https://github.com/medcl/elasticsearch-analysis-ik/tree/6.x) ##### 2、克隆项目 克隆或者下载项目到本地,解压,其中geekblog是完整项目源码, 可以使用 IDEA 导入或者打开。而sql文件下的geek_blog.sql是数据库文件。 ##### 3、使用IDEA导入项目 确保你安装了 Maven,导入项目时,选择已存在的项目,类型是 Maven 项目。 ##### 4、导入数据库 新建数据库geek_blog,注意数据库的编码和排序规则是utf-8和utf-8_general_ci,然后执行geek_blog.sql导入数据库。 ##### 5、修改项目配置文件 修改application-dev.yml文件中的配置信息,比如数据库用户名和密码,Redis服务器的主机地址和端口、文件存储路径等等信息请根据自己实际情况修改。 ##### 6、导入数据到ElasticSearch中 如果ELasticSearch服务器地址不是本地,请先修改RestClientConfig中的服务器地址,是则忽略。然后在测试代码中找到src/test/java/...目录下中ElasticSearchTest,依次执行方法testCreateIndex()、testSave()创建并导入数据。 ##### 7、启动项目 成功启动项目后便可在浏览器中访问项目。 前台访问地址:localhost:8889 后台访问地址:localhost:8889/admin。用户名:admin,密码:123456 #### 联系方式 遇到问题可以添加联系本人,本人将热情为你解答。 本人QQ号码:1114173646。QQ邮箱:1114173646@qq.com(最好发邮件,QQ不常看) #### 写在最后 首先,这个项目是本人(一名普通高校的大三蒟蒻)花了两个半月时间完成的第一个项目,由于本人技术有限,项目可能存在一些不合理的地方,甚至隐藏很多尚未发现的BUG。请大家多多见谅!也请大家能够指正!我将不遗余力地修复它。 从2020年4月初开始至2020年6月中旬,历时两个半月完成了该系统的开发,在期间由于需要上课,加之大三学业繁重,作业和实验比较多,因此能够利用起来的空闲时间并不多,但是仍然能够保证平均每天3-4小时的时间来开发这个系统。原本前期是期望自主完成前端开发的,但由于前端知识比较薄弱,开发进度十分缓慢,因此后面改用别人的已经完成的静态页面模板。即便如此,在前端仍然出现了很多问题,特别是集成了Vue框架后,对Vue的加载机制和生命周期不太了解,导致数据渲染失败、各种前端插件加载失败、失效等等问题,因此开发期间在前端可能花费了超过一半的时间,这也给我一个经验教训,即便想要从事后端开发,前端知识也不能落下。在开发的过程中基本上是一个边学习边开发的过程,项目中有很多用到的技术都是开发前没有学习过的,比如Vue、SpringSecurity、Redis、Elasticsearch以及各种前后端插件等等,只能通过网上的教程、视频和官方文档等一点点学习,所以整个项目开发过程下来比较艰苦和漫长。 之前做项目基本都是跟着网上的教程视频一边学一边做,这次原本也想着将以前跟着视频学习完成的项目作为作业,但是这样并不能完全体验到实际工作中开发项目的乐趣和辛酸,所以萌生了由自己完完全全地自主完成一个项目,虽然花费了大量的时间,甚至还占用了很多门课程的上课时间,但是我认为是值得的,我从中获益良多,不但学会了熟练地运用各类框架,深入了解并掌握了各类框架的知识,而且还对实际工作中的项目开发有了一定的认识,我相信这对我将来工作会有很大的帮助。虽然目前项目已经达到可以完成作业的标准和水平,但是我会继续开发和维护这个项目,继续不断学习新的知识,尽自己最大努力完善它,让它趋向完美!