为了账号安全,请及时绑定邮箱和手机立即绑定

【特别推送】搭建一个与"技术"无关的博客网站(Java后台)

标签:
Java

沉晓’s Blog

一、博客概述

项目背景

我一直追求着一种纯粹,写技术博客,就好好地写,心无旁骛。很长的一段日子里,我一直都缺失存放原始的感情、梦想、挣扎、无奈、和希望、和爱的空间。所以有了这个与技术无关的博客网站,它能陪我终老吗,不能吧。可能有一天,我写不动了,或许它就自然消散了。但我还是会希望,永远有一个属于自己的角落。在那个世界里,不逃荒不颠沛。

我希望在那里记录一些不经意间收获的“温暖”、可以写日记记录每一段故事、每一折心情、每一个句读,生活中的小事,这就是为什么要建立一个博客网站的意义。

博客地址:传送门

博客演示

(1)首先是web端

博客首页:

首页含有博文展示、公告(计划)展示、博文推荐、黑板报(展示博文类别和标签)等
在这里插入图片描述
有一个天气的小图标,鼠标放上去后,会展示今天,明天和后天的天气信息,IP自动定位。
在这里插入图片描述
除此之外还有留言板和音乐盒,这两部分有很大的塑造空间
在这里插入图片描述
在这里插入图片描述
博文页面

映入眼前的首先是首图和大标题
在这里插入图片描述
代码高亮,且字体含美化
在这里插入图片描述
右下角有三个小功能

分别是目录层级、翻译、扫码阅读(移动端阅读)
在这里插入图片描述
移动端扫码呈现的结果
在这里插入图片描述
评论与赞赏

在这里插入图片描述
分类页面

点击不同的分类 会呈现相关的博文
在这里插入图片描述

标签页面

点击不同的标签 会呈现相关的博文
在这里插入图片描述
在这里插入图片描述
归档页面

以时间轨迹的形式记录自己写博文的过程

在这里插入图片描述
关于我 与 关于本站页面 都是以博文的形式呈现出来的
在这里插入图片描述
在这里插入图片描述

友链页面

可以添加喜欢的网站,崇拜的大佬以及志同道合的好友的网站

在这里插入图片描述
后台登录页面

在这里插入图片描述

在这里插入图片描述

登录成功页面

在这里插入图片描述
博文界面

可以通过关键字、分类、是否为推荐博文条件定位查找博文。
在这里插入图片描述
博文写作为Markdown形式
在这里插入图片描述

分类,标签,公告以及友链都是增删改查的形式,界面一样,功能相似。

个人界面

个人界面需要权限的验证,这里为邮件的发送

在这里插入图片描述
在这里插入图片描述
邮箱大师接收的邮件
在这里插入图片描述
之后进入个人页面。

这就演示完了,功能比较简单。

(2)下面看看移动端

这里不做过多的区分

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

? 技术选型

前端UI框架 : semantic UI

前端JS框架 :JQuery

前端图标库:Font Awesome

Markdown 编辑器:Editor. md

相关插件:

  • 和风天气插件
  • 内容排版 typo
  • 代码高亮 prism
  • 动画 animate
  • 目录生成 Tobot
  • 二维码生成qrcode.js
  • 滚动侦测 waypoints
  • 平滑滚动 jquery.scrollTo

后端数据库框架:SpringDataJpa

后端服务框架:Springboot

后端模板引擎:thymeleaf

包管理工具:Maven

关系型数据库:Mysql

数据库连接池:Druid

非关系型数据库:Redis

邮件发送工具:Java Mail

后端日志:slf4j + logback

除此之外还有Markdown转HTML工具,IP处理工具,Jsoup,Httpclient,加密解密工具类等

IDEA插件有lombok等

JDK版本使用的是8 ,开发工具为Intellij IDEA

虽然列举了一大推,其实都是一些工具,会用即可, 除此之外,整体的业务逻辑也是非常简单,增删改查占据主要部分, 为了方便大家,更快更好入手这个项目,提供了请求与响应的交互文档,后面会说。

在这里插入图片描述

前端部分主要使用了SemanticUI 官网为: 传送门

Semantic UI中文网站:传送门

插件集成相关

介绍 名称 获取地址
内容排版 typo.css https://github.com/sofish/typo.css
动画 animate.css https://daneden.github.io/animate.css/
代码高亮 prism https://github.com/PrismJS/prism
目录生成 Tocbot https://tscanlin.github.io/tocbot/
滚动侦测 waypoints http://imakewebthings.com/waypoints
平滑滚动 jquert.scrollTo https://github.com/flesler/jquery.scrollTo
二维码生成 qrcode.js https://davidshimjs.github.io/qrcodejs/
编辑器 MarkDown https://pandao.github.io/editor.md

下面说明关于博客的详细信息,如果整体符合你的预期,最后部分会有部署启动的演示。

二、需求与功能

需求就没必要说了叭,功能方面,大家有了大致的印象,这里再进行展示一下:
在这里插入图片描述

整个博客网站,就只有两种角色。一个是普通游客,一个是管理员,每种角色的权限非常容易区分。

三、开发介绍

后端逻辑是非常简单的,就是单纯的增删改查,因为注重美观的元素,整个重心都偏重在了前端的框架上。

整个后端的架构思想采用了传统的MVC

数据源 --> 持久层(Dao) --> 业务逻辑层(Service) --> 请求处理层(Controller层)

实体类

Dao层的实体类:

  • 用户User
  • 博文Blog
  • 博文分类Type
  • 博文标签Tag
  • 博文评论Comment
  • 公告栏Bulletin
  • 朋友Friend
  • 留言Message

具体:

用户User
在这里插入图片描述
博文Blog
在这里插入图片描述

博文分类Type
在这里插入图片描述

博文标签Tag
在这里插入图片描述

博文评论Comment
在这里插入图片描述
公告栏Bulletin

在这里插入图片描述
朋友Friend
在这里插入图片描述

留言Message
在这里插入图片描述

由于使用了Spring Data JPA框架,数据库中的表是自动生成的。

? 持久层(Dao)和 业务逻辑层(Service)

这部分我不愿多说,它们负责的功能主要就是将数据从数据库中取出,再进行加工处理。

这部分如果详细说的话,加上后面Controller层的介绍,等于给你讲解整个项目的后端的数据是如何走起来的,你可能觉得这不是很好嘛?但这里,我就要说说我的看法了,这部分其实有着很大的发挥空间以及改进空间,比如说集合的处理,可以使用Stream,有些地方还能用到设计模式等,我不想先入为主,在观念上限制你。

如果你仅仅想拥有一个网站的话,那么也不用担心,这些瑕疵并不会导致网站不会正常运行,只能说它还不够好而已。

? 请求处理层(Controller层)

这部分是与前端直接打交道的地方,这一块清楚了,能够快速理解整个项目,这里我提供了请求与响应相关的文档

在这里插入图片描述
在这里插入图片描述
获取方式: 项目页面会有一个doc文件夹,点击里面的index.html即可
在这里插入图片描述

四、关于部署

这里你需要做一些事情(大部分的都可以不用动,必要修改的和可能会修改的都展示如下)

spring:
  thymeleaf:
    mode: HTML
    cache: false # 开发环境 保证cache关闭,打开缓存不利于开发
  datasource:
    driver-class-name: com.mysql.jdbc.Driver    # 如果是Mysql8.0需要修改
    url: yours    # 你的数据库地址和建立的数据库
    username: yourUsername  #你的数据库的账号
    password: yourPassword #你的数据库的密码
  #Redis
  redis:
    host: 127.0.0.1  # 你的redis的地址
    port: 6379  # 你的redis的端口号
  # 邮件
  mail:
    host: smtp.163.com
    username: XXX  # 发件人的用户名,这个自己把握,设置邮箱地址也不妨
    password: XXX # 授权码
    protocol: smtp
    properties.mail.smtp.auth: true
    properties.mail.smtp.port: 994
    properties.mail.smtp.starttls.enable: true
    properties.mail.smtp.starttls.required: true
    properties.mail.smtp.ssl.enable: true
    default-encoding: utf-8
    from: XXX # 发件人的邮箱地址  

server:
  # 端口号
  port: 9000 # 自己设置端口号
  1. 在项目上线之前,记得开启thymeleaf:的缓存,本身thymeleaf:比较慢,开启缓存会好一些。

  2. Mysql的配置应该会吧 ,这里不多说了。需要重点注意的是在启动项目之前,要先建立好数据库!在使用后台管理之前,要先向数据库中插入user信息。 这里插入的邮箱简称为“邮箱1号”吧,后面邮箱配置部分会说。

  3. 如果redis在本地的话,默认访问地址和端口是127.0.0.1 :6379 ,一定要注意,在启动项目之前,先把redis服务端打开。

  4. 邮箱的话,建议使用163邮箱(没那么多烦心事),作为发送邮件的代理人,这里的邮箱区别于数据库中管理员的“邮箱1号”,就把充当代理人的邮箱称为“邮箱2号”吧。在获取修改个人信息的权限的时候,邮箱2号会给邮箱1号发送邮件。

这里说一下授权码的获取:

  • 首先自行注册163邮箱,登陆之后,点击设置,选择“POP3/SMTP/IMAP”
    在这里插入图片描述
    选择 客户端授权密码 然后开启就行了 会让你验证信息,然后会有授权码的展示。
    在这里插入图片描述
  1. 设置Tomcat启动的端口号吧,记得不要冲突了。
  2. 由于使用了lombok依赖,要注意IDEA应安装的有lombok插件

五、关于项目本身

项目参考了一些资料,当时觉得只是练练手,没想到最后会开源出来,无法报出那些帮助过我的人,在这里表示非常感谢。

项目成品较为仓促,有很大的改进空间,比如说Springboot加缓存、一些设计模式的应用、还有一些集合的处理较为繁琐,可以改为Stream、由于thymleaf模板引擎性能不佳,你还可以换模板引擎等等等。

项目本身已经满足基本需求,你其实可以把它变得更酷。

如果你不喜欢前后端耦合在一起,其实在我github主页,有Vue版本的这个项目,前端技术栈采用Vue + SemanticUI-vue以及基于vue的Markdown插件,后端数据库相关的框架是Mybatis,后来因为SemanticUI-vue还在发展过程中,官方的文档不齐全,我在stack overflow等国外的开发者社区都没有找到相关的演示demo(基本上都是基于JQuery的SemanticUI),前端做起来很费劲,我毕竟不是搞前端的,也无心看源码,来贡献一些例子来。 如果哪天、semanticUI-vue文档齐全了,相关的资料多起来了,我大可能把现在的项目,改成前后端分离的。

如果你是Java初学者,通过这个项目,你至少具备了“搬砖”的本事了。

如果你比较厉害了,那可以轻松收获一个博客网站。我提供的辅助资料还是挺丰富的,代码中有着比较详细的注释,你还可以在此基础上,让它更加完善~

Github地址:传送门

如果你觉得这对你有帮助,最好的鼓励或打赏就是给我一个star

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
12
获赞与收藏
52

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消