个人博客系统项目(SpringBoot+Linux部署上线)

news/2024/5/17 12:28:09

在学完SpringBoot框架、MyBatis后,直接开始做第一个项目:博客系统
首先,该博客系统包含核心功能有:
  一、登录、注册、退出登录功能。
  二、没有登陆前可以查看博客首页以及博客展示的分页处理,以及点击查看博客可以查看用户写的博客功能。
  三、用户登陆后进行写博客、修改博客、删除博客操作功能,并记录修改博客、写下博客的时间,记录写的博客数量。
  四、在为了保证用户账户安全情况下,进行用户密码登陆后MD5加盐处理。
  五、修改头像、增加访问量功能、
  六、以及统一数据的返回、统一异常处理、拦截器拦截接口、网页、文件包


  此项目由个人独立开发,包括前端、后端、数据库表的设计以及各种功能的设计。
  运用技术:
  前端:HTML、CSS、JavaScript、JQuery、Ajax
  后端:Java、SpringBoot、MyBatis
  数据库:MySQL
  部署服务器:Linux
  部署服务器所用工具:Xshell、Xftp
  后端接口设计测试工具:Postman
访问网站:http://110.41.154.247:8080/blog_list-self.html
开源代码:
下面是完成界面展示

登陆界面:

注册界面:

不登录情况下访问首页查看博客列表

在博客列表页查看某一篇博客

登录以后管理自己的博客列表页

里面包括修改头像、查看自己博客、删除自己博客、写博客、退出登录功能。

写博客页面:

修改博客页面



点击删除博客:


接下来介绍后端设计:

在设计后端架构上,主要分了这几层:

common 层:主要为了放一些拦截器类、统一数据返回类、统一异常处理、Session常量设置、密码MD5加盐处理、虚拟路径设置类。
model层:主要放用户类:userinfo、文章类:articleinfo
controller层:主要放相关前端访问的接口方法,包括UserController、ArticleController
mapper层:主要放用来连接MySQL的一些方法,与Mapper.xml与之对应
service层:主要放用来连接Controller和Mapper层的方法


逐个介绍每个层的作用和代码详情:
common层:

1. 拦截器设置:

先自定义拦截器需要拦截的接口和页面以及文件:


将自定义拦截器里面信息放入统一拦截器并加上注解:


2. 统一数据返回,自定义Result类,将失败、成功的结果进行封装统一返回:

将数据返回类注入Spring容器:


3.设置密码MD5 以及加盐处理,里面设置两个方法,第一个方法是将密码进行UUID加盐、然后调用DigestUtils类进行MD5加密且去除“ - ”字符后再拼接盐值得到一个64位字符串 ,随后设置decrypt进行密码校验,从数据库拿到finalpassword密码,与用户登陆时输入的密码进行比对,具体算法为:将finalpassword取前32位(MD5处理会生成32位字符串,UUID加盐也会生成32位字符串),然后结合用户传入的password进行拼接然后进行MD5处理,比对处理结果和finalword是否一致,如果一致则密码正确,否则密码错误!:


4. 虚拟路径设置:
将服务器上的路径进行虚拟处理,得到一个/path/** 的路径,以至于可以被前端img 的src进行超链接访问服务器里面的图片获取用户上传的图片,完成修改头像功能:
例如<img src = 127.0.0.1: 8080//path/xxx.png>就可以获得服务器上的图片,通过访问设置的虚拟地址。



前端设计:

前端设计几个页面,里面需要引入JQuery的包,而且将css和html拷贝到Resource里面的static里面:

前端主要的作用是将页面渲染出来,得到一个个提供给用户看的界面,主要使用JavaScript来进行操作,利用JQuery的Ajax进行post/get 的http请求 发送给后端,后端通过controller层的接口接受前端传入的相关数据,然后处理请求,再将数据传送给Service层,然后给mapper层,通过Mybatis与数据库进行连接,通过Sql语句将数据传送给数据库,最后数据库可以将结果以相同的方式从数据库到mapper再到service再到controller 再通过统一数据返回传送给前端页面,前端页面通过success / error 的function进行接收最后进行渲染到前端。
下图就是一个前端JS里面的ajax请求的例子,前端通过发送post的http请求,通过url路径为“/user/login” 给后端接口 传输数据为data,随后后端处理完以后通过success进行结果的接收,返回给前端的result结果,最后渲染。


部署上线:
这里需要修改项目几个东西:

1、需要修改连接数据库的jdbc语句,将127.0.01改成服务器的ip地址
2、需要将连接数据库的用户名和密码改成服务器上的,也就是云端服务器linux里面数据库的用户名和密码
3、需要将图片保存路径修改成服务器里面的目录,将用户上传的图片保存在服务器 例如 :  D:xxx/xx改成 linux里面的目录:/root/xxx 
4、需要将虚拟路径进行修改,将虚拟路径为 /path/** 指向服务器里面的目录路径

部署需要用到云服务器,这里作者在华为云租了一个云端服务器,然后通过开放8080、3306端口,然后通过Xshell 、XFTP 进行部署,这里将maven打包好的jar后缀java文件通过xftp拖拽到远程云端服务器的目录下。
在这之前,需要在linux服务器里面先下载相关环境:JDK1.8、MariaDB,随后将sql文件通过Xftp传到linux目录下,通过source / root / xxx.sql进行执行,得到两个数据表,随后通过nohup java -jar xxx.jar &将项目部署在后台执行,遂可以通过网址访问制作好的项目。
 


http://www.mrgr.cn/p/73537073

相关文章

代码安全有门道:研发团队的数据防护手册

在快速发展的科技行业&#xff0c;研发团队掌握着企业的心脏——代码。源代码不仅承载着创新思想&#xff0c;也代表了无数的研发投入和商业机会。然而&#xff0c;2018年GitLab的一次安全漏洞导致数千个私有代码仓库被删除&#xff0c;这起事件警示我们&#xff0c;没有严格的…

Java面试:MySQL面试题汇总

1.说一下 MySQL 执行一条查询语句的内部执行过程&#xff1f; 答&#xff1a;MySQL 执行一条查询的流程如下&#xff1a; 客户端先通过连接器连接到 MySQL 服务器&#xff1b;连接器权限验证通过之后&#xff0c;先查询是否有查询缓存&#xff0c;如果有缓存&#xff08;之前…

数据治理

数据治理对于企业来说至关重要。它可以帮助企业清晰地了解自己的数据资源、数据流和数据质量。通过有效的数据治理,企业能够更好地管理和控制数据,最大化数据的价值,并在决策过程中减少错误和风险。数据治理的步骤及原则数据收集和整合数据治理的第一步是收集和整合数据。这…

ubuntu如何截图? ubuntu中截屏的三种方法

文章目录 1.ubuntu主要用途2.ubuntu如何截图&#xff1f;2.1 方法一&#xff1a;键盘按键快捷键截屏 2.2 方法二&#xff1a;系统自带软件2.3 方法三&#xff1a;第三方软件 Reference 1.ubuntu主要用途 1、桌面操作系统&#xff1a;Ubuntu可用作个人电脑或笔记本电脑的操作系…

Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机

Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机 文章目录 Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机1.安装virtualbox2.下载Window.iso文件并载入3.问题解决3.1 Kernel driver not installed (rc-1908)3.2 VT-x is disabled in the BIOS for all CPU modes 4.安装Wi…

简述Linux磁盘IO

1、什么是磁盘在讲解磁盘IO前,先简单说下什么是磁盘。磁盘是可以持久化存储的设备,根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘。 1.1 机械磁盘第一类,机械磁盘,也称为硬盘驱动器(Hard Disk Driver),通常缩写为 HDD。机械磁盘主要由盘片和读写磁头组…

互连芯片浪潮席卷AI服务器:突破瓶颈,再创辉煌

改变AI服务器&#xff1a;互连芯片技术创新和突破 AI服务器崛起&#xff0c;引领未来创新根据TrendForce数据&#xff0c;AI服务器出货量达130,000台&#xff0c;占服务器总出货量的1%。主要制造商推出生成式AI产品&#xff0c;推动订单激增。ChatGPT等应用的需求持续增长&…

【MySQL】20. 使用C语言链接

mysql connect mysql的基础&#xff0c;我们之前已经学过&#xff0c;后面我们只关心使用 要使用C语言连接mysql&#xff0c;需要使用mysql官网提供的库&#xff0c;大家可以去官网下载 我们使用C接口库来进行连接 要正确使用&#xff0c;我们需要做一些准备工作&#xff1a; …

【springCloud】版本学习

Spring Cloud介绍 官网地址&#xff1a;https://spring.io/projects/spring-cloud Spring Cloud 是一个基于 Spring Boot 的微服务架构解决方案&#xff0c;它提供了一系列工具和模式来帮助开发者构建分布式系统。Spring Cloud 的组件和模式包括配置管理、服务发现、断路器、…

P8968

太牛了。太 nb 了。 不会博弈,不会推导,盲猜全部是同种电荷,此时神明的决策固定且易于刻画,对着样例模拟一下发现对了,写一发过了 easy ver,于是不管正确性直接来想 hard ver。 考虑向上跳的过程大致操作为 \(x\gets x+\min(x,a_i)\),直觉上不存在好的维护方法。 注意到…

ELK日志收集和备份填坑实战 (滞后8个小时等时区问题)

ES的备份&#xff1a;ES快照备份 根据时间&#xff0c;每天零点在Linux机器crontab来调用api接口实现快照备份&#xff0c;通过快照备份&#xff0c;可以定准恢复到某一天的日志。 现象&#xff1a;&#xff08;坑&#xff1a;但是恢复某一天日志&#xff0c;发现会少8小时的日…

初学python记录:力扣2007. 从双倍数组中还原原数组

题目&#xff1a; 一个整数数组 original 可以转变成一个 双倍 数组 changed &#xff0c;转变方式为将 original 中每个元素 值乘以 2 加入数组中&#xff0c;然后将所有元素 随机打乱 。 给你一个数组 changed &#xff0c;如果 change 是 双倍 数组&#xff0c;那么请你返…

shell系统函数和流程控制

系统函数: 1、简单示例:点击查看代码 #!/bin/bash filename="$1"_log_$(datename +%S) echo $filenamebasename:基本语法: basename [string/pathname] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(/)字符,然后将左右字符显示出来。 basename…

RocketMQ并发消息消费重试DEMO

无序消息的重试只针对集群消费模式生效&#xff1b;广播消费模式不提供失败重试特性 Producer 发了100个对象消息 public class AddProducer {public static void main(String[] args) throws Exception {DefaultMQProducer producer new DefaultMQProducer("a-group&q…

春秋云境:CVE-2022-32991[漏洞复现]

从CVE官网查询该漏洞相关信息 该漏洞是由于welcome.php中的eid参数包含了SQL注入漏洞 则我们的目标就在于寻找welcome.php地址以及相关的可注入eid参数 开启靶机 先在页面正常注册、登录一个账号。密码随便填 进入了home目录&#xff0c;这里有三个话题可以选择开启 随便选…

模拟电路学习笔记——晶体管电流放大作用

基本共射放大电路△u1为输入电压信号,接入基极——发射极回路,称为输入回路;放大后的信号在集电极——发射极回路,称为输出回路;因发射极是两个回路的公共端,故称该电路为共射放大电路晶体管工作在放大状态的外部条件:发射结正向偏置,集电结反向偏置输入回路中基极电源…

MATLAB偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据

全文链接:http://tecdat.cn/?p=2655 最近我们被客户要求撰写关于偏最小二乘回归(PLSR)和主成分回归(PCR)的研究报告,包括一些图形和统计输出。 此示例显示如何在matlab中应用偏最小二乘回归(PLSR)和主成分回归(PCR),并讨论这两种方法的有效性 当存在大量预测变量时…

UE5 C++ 射线检测

一.声明四个变量 FVector StartLocation;FVector ForwardVector;FVector EndLocation;FHitResult HitResult;二.起点从摄像机&#xff0c;重点为摄像机前9999m。射线检测 使用LineTraceSingleByChannel 射线直线通道检测&#xff0c;所以 void AMyCharacter::Tick(float Delt…

matlab使用经验模式分解emd 对信号进行去噪

原文链接 : http://tecdat.cn/?p=2567 原文出处:拓端数据部落公众号对于这个例子,考虑由具有明显频率变化的正弦波组成的非平稳连续信号。手提钻的振动或烟花声是非平稳连续信号的例子。 以采样频率加载非平稳信号数据fs,并可视化混合正弦信号。 htmlload(sinusoidalSigna…

Spring Boot 学习(3)——Spring Initializr 创建项目问题解决

产生问题的原因&#xff0c;各种的版本都较老&#xff0c;所以导致出现问题。目前暂未打到合适的教程&#xff0c;按老教程学起来先。 小白瞎学&#xff0c;大神勿喷&#xff01; 再次强调环境&#xff1a;maven 3.3.9、jdk 1.8、idea 2017、Spring 4.3.13、Spring Boot 1.5.…