个人技术总结————SpringBoot图片上传及jar包部署测试
| 这个作业属于哪个课程 | 2022年福大-软件工程、实践-W班 |
|---|---|
| 这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
| 这个作业的目标 | 个人技术总结————SpringBoot图片上传及jar包部署测试 |
| 其他参考文献 | CSDN博文,构建之法(邹欣 第三版) |
目录
- 技术回顾与总结
- 学习路线
- 开发收获
- SpringBoot图片上传及jar包部署测试
- 技术概述
- 技术详述
- 图片上传
- 自定义异常处理
- 图片上传异常处理类设置
- 统一异常处理
- 指定参数,单文件,多文件上传
- 图片限制
- 类型限制
- 大小限制
- 文件名处理
- 存放位置
- 文件上传
- 设置对外访问路径
- liunx系统环境配置与jar包部署
- JDK安装
- JDK下载
- 文件上传
- 解压
- 配置环境变量
- tomcat安装
- 下载tomcat
- 上传
- 解压
- 启动tomcat
- 查看是否启动成功
- 外部访问tomcat
- 关闭tomcat
- 修改端口
- Mysql数据库安装
- 查询是否安装数据库
- 下载官方mysql包
- 安装mysql包
- 安装mysql
- 启动mysql
- 查看mysql运行状态
- 查看初始密码
- 进入数据库
- 修改密码
- redis安装
- 下载redis
- 解压redis
- 编译redis
- 安装redis
- 启动redis
- 查看redis进程
- 关闭端口访问限制
- 后台部署jar包
- 启动运行
- 关闭运行
- 问题解决
- 图片上传路径访问异常
- mysql数据库远程访问问题
- mysql数据库安装异常
- 总结
- 图片上传
- liunx环境搭建及jar包部署
- 参考文献、参考博客
技术回顾与总结
学习路线

开学初制定的学习路线,并没有完成相应学习路线的学习,目前学习了JavaWeb,常用的开发框架SpringBoot,Mybatis-plus,以及SSM框架整合等,此外还学习了Liunx基础知识,对redis缓存有了初步了解。
开发收获
在团队项目开发中主要负责后端接口的开发,我们组的技术栈包括SpringBoot,MyBatis-plus,Redis等。在开发过程中,也很好地对执行了代码规范,不再是先写代码再执行规范。同时也学会了SpringBoot图片上传接口的实现,自定义异常处理机制,以及jar部署Liunx服务器对图片上传进行测试。此外,还了解了一些SpringBoot开发规范,可以很好地进行开发。除了基本的层次以外,可以添加DTO层,用于封装sql语句返回的复杂内容,以及VO层,对前端请求参数进行封装。使用springboot自带的@validated注解,对前端参数进行校验,会更方便。同时也很好地锻炼了与队友的沟通能力。
SpringBoot图片上传及jar包部署测试
技术概述
实现图片上传接口,用户可以上传单张或者多张图片,对图片的大小,类型进行限制,指定存储服务器的位置,同时对图片上传异常进行自定义异常处理。同时搭建在liunx服务器上的jar包环境,部署jar包进行测试。
技术详述
图片上传
上传图片部分代码
自定义异常处理
图片上传异常处理类设置
图片上传过程中,用户可能会选择错误的图片上传,此时就应该抛出对应的异常并进行处理。所以我们要创建exception包下创建FileUploadException类,并继承自RuntimeException类。此外还要处理图片空异常,大小超出限制异常,图片类型异常,图片上传IO流异常,继承自FileUploadException。
图片上传异常类
统一异常处理
然后在GlobalExceptionController的fileUploadexceptionHandler()的@ExceptionHandler注解中添加FileUploadException.class异常的处理;最后在方法中处理这些异常,并向前端返回异常信息。GlobalExceptionController的@ControllerAdvice注解进行全局增强处理。
指定参数,单文件,多文件上传
指定参数MultipartFile对象,实现单文件上传,MultipartFile数组,可以实现多文件上传,与单文件上传不同的是,对MultipartFile数组进行for循环处理。
图片限制
类型限制
设置图片的类型,不属于avatatType中的图片类型,抛出异常,并通过全局异常处理,向前端返回异常信息。
大小限制
设置图片上传大小,对超出大小的图片,抛出异常,并通过全局异常处理,向前端返回异常信息。
文件名处理
保存图片的后缀,使用uuid对文件名进行改写,保证文件名的唯一性,并将将其拼接。此外,对于上传文件为中文名时,在liunx系统上出现乱码,导致浏览器无法直接访问的现象出现,该方法可以避免这种情况的出现。
存放位置
将图片存储位置设置为liunx服务器上的固定路径,服务器重启后,文件路径都不会改变,可以直接通过url访问,当然要添加路径映射。
文件上传
使用MultipartFile对象的transferTo()实现文件上传,文件上传IO异常,抛出异常,并通过全局异常处理,向前端返回异常信息。
设置对外访问路径
如果直接访问静态资源是访问不到的,需要进行路由映射。使用addResourceHandlers()方法添加路径映射。
- addResoureHandler:指的是对外暴露的访问路径
- addResourceLocations:指的是内部文件放置的目录

liunx系统环境配置与jar包部署
部署服务器要从零开始,安装JDK,才能运行jar包。如果是SpringBoot项目的话,无需安装tomcat就可以运行,因为jar包自带tomcat。此外,还要安装mysql数据库,导入数据库资源(推荐使用navicat远程访问)。如果,使用到redis缓存处理,要安装redis数据库,并将redis挂在后台运行。服务器管理安全组开启相应的端口访问限制。将jar包部署到后台运行。
JDK安装
liunx中安装jdk有两种方式:一种是tar.gz安装,一种是rpm安装方式安装,个人更推荐tar.gz方式安装
JDK下载
文件上传
xftp文件上传工具将文件上传,在Linux中的根目录下有一个 usr 共享目录,因为一些软件不仅 root要用,其他用户也要用,所以我们建议将软件安装在这个目录下,即 /usr目录下
解压
- 使用liunx命令解压jdk
tar -zxvf ***.tar.gz - 查看jdk版本号
cd /usr/jdk/bin/ 执行./java -version
配置环境变量
为了可以在任何地方使用java命令所以配置环境变量
修改系统的配置文件,设置环境变量并在其中追加上Path
- 配置环境变量
vi /etc/profile 在profile后面最加 export JAVA_HOME=/usr/jdk export PATH=$PATH:$JAVA_HOME/bin - 重新加载配置
source /etc/profile 加载配置生效
tomcat安装
当然SpringBoot项目的jar包可以省略这一步。Tomcat是由java写的,所以我们在安装 Tomcat 之前必须安装JDK并配置环境变量
下载tomcat
上传
使用xftp连接服务器上传
解压
使用liunx命令解压到指定目录下
tar -zxvf tomcat 或 tar -zxvf tomcat -C /user/
启动tomcat
进入tomcat的bin目录,并执行startup.sh脚本
cd /usr/apache-tomcat-8.5.78/bin
执行./startup.sh
查看是否启动成功
查看 Tomcat 是否启动成功
执行 jps
出现Bootstrap、Jps即启动成功
外部访问tomcat
关闭防火墙,开启对应端口的访问限制
systemctl stop firewalld 关闭网络防火墙(暂时关闭,下次Linux重启时会自动开启防火墙)
systemctl disable firewalld 关闭开机自启动(永久关闭,注意,先执行第一句,再执行这一句)
关闭tomcat
进入tomcat的bin目录,并执行shutdown.sh脚本
cd /usr/apache-tomcat-8.5.78/bin
执行./shutdown.sh
修改端口
进入Tomcat的conf目录修改server.xml配置文件其中的端口号
cd /usr/tomcat/conf/
执行vim server.xml
Mysql数据库安装
CentOS7 版本中MySQL数据库已从默认的程序列表中移除
查询是否安装数据库
rpm -qa | grep -i mysql
查询结果表明我安装的是5.7.38版本

下载官方mysql包
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
安装mysql包
yum -y install mysql57-community-release-el7-10.noarch.rpm
安装mysql
yum -y install mysql-community-server
如果执行过程中出现Unable to find a match: mysql-community-server,可以通过命令解决
yum module disable mysql
启动mysql
systemctl start mysqld.service
查看mysql运行状态
service mysqld status
mysql运行状态显示active即显示成功
查看初始密码
grep 'password' /var/log/mysqld.log
红色部分即为密码
进入数据库
mysql -uroot -p
如果数据库无法访问,修改mysql配置文件my.cnf,新增skip-grant-tables
// 先关闭mysql服务
service mysqld stop
// 查找my.cnf所在目录
find / -name my.cnf
// 编辑my.cnf
vi my.cnf
// 插入
skip-grant-tables
// 重启服务器
service mysqld start
修改密码
show databases;
use mysql;
// 设置密码
update user set authentication_string=password('passsword') where user='root';
修改配置文件my.cnf,删除skip-grant-tables,重启,再登录
redis安装
下载redis
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
解压redis
tar -zxvf redis-5.0.7.tar.gz
编译redis
redis使用C语言开发的,要安装gcc编译器
make 输入make指令作为编译命令
安装redis
make PREFIX=/usr/local/redis install
PREFIX= 这个关键字的作用是编译的时候用于指定程序存放的路径,指定存放路径也方便后续卸载,rm -rf redis存放目录
配置文件会存放在bin目录下,redis.conf 存放配置文件
启动redis
- 前台进程
// redis 作为前台进程 ./bin/redis-server ./redis.conf - 后台进程
修改redis.conf配置文件,可以通过liunx常用命令编辑配置文件redis.conf,将daemonize no修改为daemonize yes,即可以后台运行
查看redis进程
- 采取查看进程方式
ps -aux | grep redis - 采取端口监听查看方式
netstat -lanp | grep 6379
关闭端口访问限制
- 关闭防火墙
systemctl stop firewalld 关闭网络防火墙(暂时关闭,下次Linux重启时会自动开启防火墙) systemctl disable firewalld 关闭开机自启动(永久关闭,注意,先执行第一句,再执行这一句) - 打开安全组端口访问限制
- 3306 mysql数据库远程访问端口
- 6379 reids数据库远程访问端口
- 465 是为SMTPS(SMTP-over-SSL)协议服务开放的,用来发送邮件,防止邮件泄露
后台部署jar包
启动运行
将jar包放到服务器的任意目录下,执行下面命令即可启动项目服务,可以通过jar包中指定的端口访问
// 这种方法,jar包会在后台运行,并输出日志到指定文件夹下
// 后台运行,nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
nohup java -jar test.jar >temp.txt &
关闭运行
- 查询端口对应的进程信息
netstat -alnp | grep portNumber
- 根据jar包的进程号pid,关闭进程
kill -9 pid
问题解决
图片上传路径访问异常
jar包部署到liunx服务器上,且设置文件的对外访问路径,但是图片依旧无法访问
- 考虑到本地windows和liunx服务器文件系统是不同的,本地测试,可以访问并不意味着liunx服务器也可以。
- 在windows环境中,开发环境时:user.dir 指向的是项目的根目录;如果将项目部署到tomcat下,user.dir指向的路径:当前用户的桌面
- 在linux环境下,将项目部署到tomcat中指向的路径为tomcat的bin目录。
- 此外,重启服务器后,tomcat都会创建不同的临时文件夹进行存储图片, 所以服务器每次重启后都会都会访问不到之前的静态资源,因为新的文件夹里没有之前的静态资源。
- 虽然尝试过配置动态的路径映射,但是似乎好像也没办法通过url访问
- 如果配置了SpringSecurity的访问限制,要配置,相应的映射路径可以直接访问,不需要token验证。
mysql数据库远程访问问题
本地无法访问远程数据库,navicat访问报错
- 检查是否关闭3306端口防火墙
// 查看防火墙是否已开放3306端口 firewall-cmd --query-port=3306/tcp // 设置3306端口为永久开放 firewall-cmd --add-port=3306/tcp --permanent // 查看firewalld状态,发现当前是dead状态,即防火墙未开启 systemctl status firewalld // 关闭防火墙 systemctl stop firewalld // 重启防火墙(设置了新的端口记得先关闭,再重启) systemctl start firewalld - 服务器安全组是否开放3306端口
- 当前root是否有远程访问的权限
显示 host ip is not allowed to connect to this MYSQL server.
// 登录服务器mysql数据库,修改root下host值,任意远程ip都可以访问update user set host='%' where user='root'
mysql数据库安装异常
使用 yum -y install mysql-community-server 命令安装mysql,下载速度慢,有时候会安装失败
- Failing package is: mysql-community-client-5.7.38-1.el7.x86_64 GPG Keys are configured as: file://
原因可能是:MySQL GPG 密钥已过期导致
解决办法:执行下列命令rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 - 如果无法解决建议删除后重新安装
- 关闭MySQL 服务
service mysql stop - 查询是否安装
rpm -qa | grep -i mysql
- 卸载并删除mysql所有组件服务
rpm -ev *** - 查看MySQL对应的文件夹
find / -name mysql
- 删除对应文件夹
rm -rf *** - 最后验证是否删除完成
rpm -qa | grep -i mysql
- 关闭MySQL 服务
总结
图片上传
图片上传是在文件上传的基础上添加文件类型限制。通过全局异常处理可以对自定义的异常类型进行异常处理,并向用户返回相应的异常信息。对图片设置唯一的文件名,避免中文访问异常。此外在Liunx服务器上要设置图片上传的固定地址,这样在路径映射后可以直接通过url访问。
liunx环境搭建及jar包部署
环境搭建过程中,JDK安装完成后,要注意设置全局变量,这样才能在liunx服务器的任意位置访问。tomcat安装后,要关闭liunx服务器防火墙,用户才可以外部访问tomcat。mysql安装完成后,要设置mysql中root的访问ip为%,关闭端口的防火墙,以及开启服务器端口安全组,这样就可以通过navicat直接访问。redis安装后,要修改配置文件,开启守护进程,这样才能后台运行。使用nohup后台部署jar包,
参考文献、参考博客
相关推荐
服务器使用Nginx部署Springboot项目的详细教程(jar包)
主要介绍了服务器使用Nginx部署Springboot项目的详细教程(jar包),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
SpringBoot项目运行jar包启动的步骤流程解析
主要介绍了SpringBoot项目运行jar包启动的步骤流程,本文分步骤通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
SpringBoot项目没有把依赖的jar包一起打包的问题解决
主要介绍了SpringBoot项目没有把依赖的jar包一起打包的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
SpringBoot项目Jar转War部署方案
本文提供SpringBoot项目Jar转War部署方案,希望能够对各位提供帮助!
springboot-所需jar包.zip
包含30个SpringBoot所需jar包!!

















