图片无法访问请移步:http://www.alanliang.site/article/15
[toc]
- 使用当前流行的框架组合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
前台首页2
文章详情页
后台首页
后台页面1
后台页面2
后台页面3
本博客系统分为前台和后台两个大模块,其中后台为博客系统管理页面,前台为用户界面。
系统功能模块图如下:
后台主要包括以下几个功能:
-
登录功能:用户进入后台时要登录,需要输入用户名、密码和验证码,可以选择记住密码。
-
仪表盘页面:用户在仪表盘页面可以查看浏览量、评论量等各类数据的统计,系统公告,最近的访问日志和操作日志,最新的评论、留言和文章,最近7天的前后台浏览统计等。
-
用户管理:用户可以查看系统的用户信息,根据特定列进行排序,并可以输入用户名等信息进行搜索,可以添加新的用户、修改用户信息和用户状态、删除用户,可以导出和打印用户数据。
-
角色管理:用户可以查看系统的角色信息,根据特定列进行排序,并可以输入角色名等信息进行搜索,可以添加新的角色、修改角色信息和角色状态、删除角色,可以导出和打印角色数据。
-
菜单管理:用户可以查看系统的菜单信息,根据特定列进行排序,可以添加新的菜单、修改菜单信息、删除菜单。
-
访客管理:用户可以查看系统的访客信息,根据特定列进行排序,并可以输入用户名等信息进行搜索、可以修改访客状态、删除访客,可以导出和打印访客数据。
-
公告管理:用户可以查看系统的公告信息,根据特定列进行排序,并可以输入标题等信息进行搜索、可以修改公告信息、删除公告,可以导出和打印公告数据。
-
访问日志管理:用户可以查看系统的访问日志信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以删除访问日志,可以导出和打印访问日志数据。
-
操作日志管理:用户可以查看系统的操作日志信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以删除操作日志,可以导出和打印操作日志数据。
-
数据源监控功能:用户需要输入数据源的用户名和密码,可以查看数据源的相关信息。
-
本地存储管理:用户可以查看系统的本地存储的文件信息,根据特定列进行排序,并可以输入文件名等信息进行搜索,可以上传文件、修改文件信息、删除文件,可以导出和打印本地文件数据。
-
七牛云存储管理:用户可以查看系统的七牛云存储的文件信息,根据特定列进行排序,并可以输入文件名等信息进行搜索,可以上传文件、修改文件信息、删除文件,可以配置和同步七牛云存储,可以导出和打印七牛云存储文件数据。
-
接口文档功能:开发人员可以查看系统的接口开发文档并对接口进行测试。
-
文章管理:用户可以查看系统的文章信息,根据特定列进行排序,并可以输入文章标题等信息进行搜索,可以发布新的文章、修改文章信息和发布状态、审核文章、删除文章,可以导出和打印文章数据。
-
分类管理:用户可以查看系统的分类信息,根据特定列进行排序,并可以输入分类名称等信息进行搜索,可以添加新的分类、修改分类信息、删除分类,可以导出和打印分类数据。
-
标签管理:用户可以查看系统的标签信息,根据特定列进行排序,并可以输入标签名称等信息进行搜索,可以添加新的标签、修改标签信息、删除标签,可以导出和打印标签数据。
-
评论管理:用户可以查看系统的评论信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以审核评论、回复评论、删除评论,可以导出和打印评论数据。
-
留言管理:用户可以查看系统的留言信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以审核留言、回复留言、删除留言,可以导出和打印留言数据。
-
友链管理:用户可以查看系统的友情链接信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以添加新的友链、修改友链信息、审核友链、删除留言,可以导出和打印友链数据。
-
相册管理:用户可以查看系统的照片信息,根据特定列进行排序,并可以输入日期范围等信息进行搜索,可以添加新的照片、修改照片信息、删除照片,可以导出和打印照片数据。
前台主要包括以下功能:
-
首页:访客可以查看博主的文章概览,包括置顶文章、推荐文章。
-
文章详情页:访客可以查看文章的详细内容,文章内容有目录,代码有高亮显示和语言显示并可点击复制。访客可以对文章进行点赞、分享和评论。
-
分类展示页:访客可以查看博主的文章分类和文章分类的雷达统计图,并按照文章分类查看文章。
-
标签展示页:访客可以查看博主的文章标签和文章标签生成的标签云统计图,并按照文章标签查看文章。
-
归档展示页:访客可以查看博主的文章日历统计图,并按照时间轴查看文章。
-
关于我展示页:访客可以查看博主的个人信息和联系方式,可以查看文章的统计信息、博主的技能展示和相册。
-
友情链接页:访客可以查看博客的友情链接,可以查看留言和对博客进行留言。
-
搜索功能:访客可以根据关键字实时搜索文章,搜索支持分词,搜索结果中关键字高亮显示。
-
网站统计功能:网站底部显示访问量、访问人数和运行时间。
-
访客注册登录功能:访客评论文章前需要注册,评论文章时需要登录。
数据库模型图如下:
该项目需要安装以下软件:
JDK版本:JDK8
集成开发环境:IntelliJ IDEA
Redis版本:Redis
ElasticSearch版本:ElasticSearch 6.8.7**(另需安装对应版本的IK分词器)**
MySQL版本:5.6
Maven版本:Maven
为了避免无法意料的错误,特别注意ElasticSearch版本必须为6.8.7,并且安装对应版本的IK分词(https://github.com/medcl/elasticsearch-analysis-ik/tree/6.x)
克隆或者下载项目到本地,解压,其中geekblog是完整项目源码, 可以使用 IDEA 导入或者打开。而sql文件下的geek_blog.sql是数据库文件。
确保你安装了 Maven,导入项目时,选择已存在的项目,类型是 Maven 项目。
新建数据库geek_blog,注意数据库的编码和排序规则是utf-8和utf-8_general_ci,然后执行geek_blog.sql导入数据库。
修改application-dev.yml文件中的配置信息,比如数据库用户名和密码,Redis服务器的主机地址和端口、文件存储路径等等信息请根据自己实际情况修改。
成功启动项目后便可在浏览器中访问项目。
前台访问地址:localhost:8889
后台访问地址:localhost:8889/admin。用户名:admin,密码:123456
遇到问题可以添加联系本人,本人将热情为你解答。
QQ邮箱:1114173646@qq.com
首先,这个项目是本人(一名普通高校的大三蒟蒻)花了两个半月时间完成的第一个项目,由于本人技术有限,项目可能存在一些不合理的地方,甚至隐藏很多尚未发现的BUG。请大家多多见谅!也请大家能够指正!我将不遗余力地修复它。
从2020年4月初开始至2020年6月中旬,历时两个半月完成了该系统的开发,在期间由于需要上课,加之大三学业繁重,作业和实验比较多,因此能够利用起来的空闲时间并不多,但是仍然能够保证平均每天3-4小时的时间来开发这个系统。原本前期是期望自主完成前端开发的,但由于前端知识比较薄弱,开发进度十分缓慢,因此后面改用别人的已经完成的静态页面模板。即便如此,在前端仍然出现了很多问题,特别是集成了Vue框架后,对Vue的加载机制和生命周期不太了解,导致数据渲染失败、各种前端插件加载失败、失效等等问题,因此开发期间在前端可能花费了超过一半的时间,这也给我一个经验教训,即便想要从事后端开发,前端知识也不能落下。在开发的过程中基本上是一个边学习边开发的过程,项目中有很多用到的技术都是开发前没有学习过的,比如Vue、SpringSecurity、Redis、Elasticsearch以及各种前后端插件等等,只能通过网上的教程、视频和官方文档等一点点学习,所以整个项目开发过程下来比较艰苦和漫长。
之前做项目基本都是跟着网上的教程视频一边学一边做,这次原本也想着将以前跟着视频学习完成的项目作为作业,但是这样并不能完全体验到实际工作中开发项目的乐趣和辛酸,所以萌生了由自己完完全全地自主完成一个项目,虽然花费了大量的时间,甚至还占用了很多门课程的上课时间,但是我认为是值得的,我从中获益良多,不但学会了熟练地运用各类框架,深入了解并掌握了各类框架的知识,而且还对实际工作中的项目开发有了一定的认识,我相信这对我将来工作会有很大的帮助。虽然目前项目已经达到可以完成作业的标准和水平,但是我会继续开发和维护这个项目,继续不断学习新的知识,尽自己最大努力完善它,让它趋向完美!