前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)-1

本文涉及的产品
对象存储 OSS,20GB 3个月
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
对象存储 OSS,恶意文件检测 1000次 1年
简介: 前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)

前言


源码代码:

https://github.com/YuyanCai/gulixueyuan-back–zs

https://github.com/YuyanCai/gulixueyuan-front–zs


前端页面:

https://github.com/YuyanCai/guli-xy-fd


整合CRUD


前后端对接流程

我们这里拿查询所有user做实例


全栈开发流程


16a8f8b587ba97ddf441af88f8403ca0_7fc00dccedacb64c93b0b1c947f48af5.png


2c029a3d448bfc1feba8ea24152a6671_d160aa28535dc883462d203a85949a8e.png


ce2a30cbf89ac69db1a1d54d2b26ea8b_9821e850c8e1d47376d138b35f06173f.png


添加路由

模板中给的其实也有目录,我们看着复制粘贴根据自己的需求改改即可

0a1661ac4c709c172eb31e4cf349adbd_350a9e8f77bc45e4b4815d9823cfaceb.png

点击路由显示页面

redirect:'/teacher/table’作用是当访问/teacher时会自动跳到/teacher/table


component是做布局的,就是页面做固定不动的部分


4aca8da9da508500b346a77b585d07d4_e0c5e17dccacea461d7a3456e5558189.png


在api文件夹创建js文件,定义接口地址和参数

2fbee15f59961be6f213809de7b3a034_a52c3f98baa0d9b949a09eebe8850df7.png


创建vue页面引入js文件,调用方法实现功能

我们先来了解一下response对象


以下是response对象的属性和方法


所以说,response就是代表接口返回的数据


03e2e2382951ea3c373d2d4c1b968e86_e34cb867b7517a46ff289aeb21db3ef7.png


8652179657fc3c050728f88338a36f12_c2ad55b463969d454103d56b1b0b6fd5.png


在看我们后端定义的接口


defd7d839a7c28d655e393da272710a7_14949984e103aa875db3058ded7648af.png


这里的scope.row是获取行数据是固定写法


066361155bee5077777be23052ff8f2c_bd0b473cf9f8a3d05143d5543d2c97c7.png


这样功能就实现了


ef48b102f16d6abcc18993219645a593_d545582bf9c54628c8b6f8d7af2655a9.png


补充下分页条实现方式

分页条


直接拿element-ui里面的来用就可以


因为我分页条和表单在同一页面,所以写在同一组件下


5eba2a2bd50b059bccff3434bbc0a241_e37cd1bbf884ff81ba37cc9d8b7bb284.png


多条件查询

直接拿element-ui里面的来用就可以


因为我分页条和表单在同一页面,所以写在同一组件下


主要是js对象和java对象的问题,注意区分即可


其余的也是直接用element-ui组件直接拿过来改改数据


53d1260db3acf684db13c4df0cdd49c9_ef93eeb986c569dca0f1e016c82a2f65.png


有了查询对象之后把查询对象传入我们写的获取讲师列表即可


我们在查询按钮绑定方法


a622744ac534eaa7d555786116e587d1_427ef39cb4f61240fa5ee1bebf72f569.png


测试

f9dac71883b2ad86ec9c76c6983224a0_b5d71a2fe33b02b9f6e2bc68ddaa6ff5.png


删除功能

9052cf35cf27d1513d01918fe93b4636_1d3c7023bc2e1ed528a2e19f68030b34.png


增加功能

56e01dd2d1eb629137af9fe69176ac79_6baf7962cd02574071f40609c018760d.png


3、定义增加API


8adb70f29d631c8f07b604a527580285_2b292350500c4eb385f877816babae1d.png


4、引入js,写vue页面


0def995bae949ea58dcae8afa3165df1_535702e9b1a815173f93e1c1667e82e8.png


5、测试


5ddd906fa82a1019abbc7ee4b55037c6_f7f3c56bde714265e6af09e18488ccb5.png


6、补充


04e04e04142fcf697d747db5246175fa_b9f5f4a37bb733bfc449ac84531b8f54.png


修改功能

我们想让增加和修改在同一页面下进行


增加和修改不同点在于,修改要做数据回显


那么如何区分这两个请求呢?


答案是修改的时候地址栏会有id,而保存没有


定义Api、定义路由、定义跳转路径


745c61be0133c3359a9ffd33f628131b_acb2b1ebb15626f0316d28fba2924609.png


修改功能逻辑


a255c68c02df6c2d8e847dd9408e568d_d7125d8b1de2972dc893c8d60edf4738.png


测试


cf08044d6ecc6ecc4551d7b33dafd391_e21898fa11c5aeaa5a08acfae944e49d.png


修改成功


ba8748f9a86b5b300ac9be5169ee63aa_fb092b1f93d1397d73b6eeb57865cf5f.png


修改是用put请求还是post请求?

idempotent 幂等的


这两个方法看起来都是讲一个资源附加到服务器端的请求,但其实是不一样的。一些狭窄的意见认为,POST方法用来创建资源,而PUT方法则用来更新资源。


幂等(idempotent、idempotence)是一个抽象代数的概念。在计算机中,可以这么理解,一个幂等操作的特点就是其任意多次执行所产生的影响均与依次一次执行的影响相同。


POST在请求的时候,服务器会每次都创建一个文件,但是在PUT方法的时候只是简单地更新,而不是去重新创建。因此PUT是幂等的。


举一个简单的例子,假如有一个博客系统提供一个Web API,模式是这样http://superblogging/blogs/post/{blog-name},很简单,将{blog-name}替换为我们的blog名字,往这个URI发送一个HTTP PUT或者POST请求,HTTP的body部分就是博文,这是一个很简单的REST API例子。我们应该用PUT方法还是POST方法?取决于这个REST服务的行为是否是idempotent的,假如我们发送两个http://superblogging/blogs/post/Sample请求,服务器端是什么样的行为?如果产生了两个博客帖子,那就说明这个服务不是idempotent的,因为多次使用产生了副作用了嘛;如果后一个请求把第一个请求覆盖掉了,那这个服务就是idempotent的。前一种情况,应该使用POST方法,后一种情况,应该使用PUT方法。


整合阿里云OSS


我们想实现在添加讲师信息的时候加上头像上传功能,怎么办呢?


用阿里云的OSS对象存储即可


环境部署

首先我们打开阿里云注册个OSS对象存储


0317c0c18fe9ca718aeae5993fc05957_7f7e5bb02521fb1aa60c766af943c2b1.png


Java操作OSS

详细操作可查官方文档,下面只写关键代码


[SDK示例 (aliyun.com)](https://help.aliyun.com/document_detail/32008.html)


1、定义工具类读取配置文件


通过继承InitializingBean


当项目已启动,spring加载之后,执行接口一个方法。就是afterPropertiesSet


读取配置文件内容后,在通过执行接口里的一个方法,从而让外面能使用


8a010b147fe48d3e182f292940f3da13_8d03ef75e453ba69b64338e959d528e2.png


2、编写上传文件接口


MultipartFile类是org.springframework.web.multipart包下面的一个类,如果想使用MultipartFile类来进行文件操作,那么一定要引入Spring框架。MultipartFile主要是用表单的形式进行文件上传,在接收到文件时,可以获取文件的相关属性,比如文件名、文件大小、文件类型等等。


我们对着官网实例进行修改

153e47e68352d6f63fbfc8583bf22e1a_8ee7e153e639d7920148af216e647596.png

06c41fc4e9341b275571ffae914a2dc0_ed92aa1213d1c9022eae0c31ae383699.png


f4853451a948b79627e31e578feb4245_1e0135092a09e16876d05bc47dd4a147.png


3、controller调用接口


0de9d73e55cf3d90781d54ee264ab8e3_7253eb724105607bd1f5cc95515601be.png


4、前端部分


引入上传图片框也在save页面,所以


8ee45ed5b38c9528a88923e3442915f8_572cff3b0f092885bb2440d6dc1b5be5.png

907b8041c2dfa77512ab89f65008149f_eeaabccf9e315c0ad5f1afbac3c679ea.png


5、测试


9e9038ac4dd9be61455d5a5dfad7bb40_5e16f48790c24b208bc5bdf68e6362ab.png


上传成功


727dd11bc9210180bd890fbaed669db3_beaab80495134400b02d26b511b589ed.png

744a295a80a1317d9fa01bfb912e74af_7368e47b493bb724e53dd7c14bbf9e52.png


nginx反向代理

Nginx快速入门_小蜗牛耶的博客-CSDN博客_nginx 快速入门


首先知道nginx的配置文件是nginx.config


其次是nginx的配置文件是可以看成一个http请求处理的


然后是nginx的server服务。可以理解为每个服务监听不同的端口,分发不同的连接服务。如果是自己的可以直接删掉初始server ,直接新建自己的server。


42fa100721071afc667c0ca3910616ef_7743293ddcc9cd583e254b4580cf07af.png


配置文件如下:


worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
  client_max_body_size 1024m;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       81;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
  server {
        listen       9001;    #监听端口号
        server_name  localhost;  #主机名称
        location ~ /eduService/ {  #匹配路径        
            proxy_pass http://localhost:8001;
        }
    location ~ /eduService1/ {  #匹配路径        
            proxy_pass http://localhost:6001;
        }
        location ~ /eduUser/ {
            proxy_pass http://localhost:8001;
        }
        location ~ /eduOss/ {
            proxy_pass http://localhost:8002;
        }
        location ~ /eduVod/ {
            proxy_pass http://localhost:8003;
        }
        location ~ /eduCms/ {
            proxy_pass http://localhost:8004;
        }
        location ~ /ucenterService/ {
            proxy_pass http://localhost:8006;
        }
        location ~ /eduMsm/ {
            proxy_pass http://localhost:8005;
        }
        location ~ /orderService/ {
            proxy_pass http://localhost:8007;
        }
        location ~ /staService/ {
            proxy_pass http://localhost:8008;
        }
        location ~ /admin/ {
            proxy_pass http://localhost:8009;
        }
    }
}

7600d0c1372dd4bea2cae6b8161bf0bf_2df00d5ace3cab6e7e938d7d51c65606.png


启动nginx


9c3258acc6a5fb3c611e27be4931757e_86fb2111686043e0e0a5eda5a694f365.png


修改项目访问路径为nginx的ip

84789cde14f4fc64dea2d08a2955b900_4ab1a97e86686d43d18cc83b5740663c.png

0b0297e0304944206bf14f58a309e364_2763849b1cbf20869f037352caede578.png


EasyExcel


简介

alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具 (github.com)


1.Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。


2.EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减 少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析


3.EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理


(AnalysisEventListener)


写入测试

a52a8c4953fe46dbdf7a5601361d15de_5c6abaef402a05235b4a5c94ac284fd7.png


引入依赖


com.alibaba easyexcel 2.1.1

c6663706b150ee9326d522853cb7dc42_5b518a648182ffbbebbf72a4c90398d9.png


读取测试

6335992623c35998179d7ea8ea92221b_5be3bc8b75627b3cd1b85d186c61c83f.png


1、创建实体类和excel对应


5dd319cb436e454cec72c897990abb64_645de7d4131d7d6130c201aa81537d00.png


2、创建回调监听器


4cbde6b61f5ade802d2318df6b603a45_7c3d28df0bd82704c77dcb3641f97e07.png


3、直接读


5a1b942bf2b4ac680df09f3627521b31_33f84e0f5b8595eed94573afd77cf758.png

7ffed065b438e25c2d1a5db9fec04f45_f2e541c9e805ae223ec43d1cf8eb78d6.png

相关文章
|
3月前
|
NoSQL Redis Docker
在docker中安装redis,并且阿里云服务器配置
在docker中安装redis,并且阿里云服务器配置
192 1
|
2月前
|
弹性计算 NoSQL Redis
阿里云ECS使用docke搭建redis服务
阿里云ECS使用docke搭建redis服务
159 1
|
24天前
|
NoSQL Cloud Native Redis
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
阿里云瑶池数据库团队后续将持续参与Valkey社区,如过往在Redis社区一样耕耘,为开源社区作出持续贡献。
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
|
2月前
|
弹性计算 NoSQL 测试技术
倚天使用|Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
137513 5
|
2月前
|
消息中间件 存储 NoSQL
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
|
3月前
|
NoSQL 关系型数据库 Linux
阿里云RDS购买Linux——安装redis服务
阿里云RDS购买Linux——安装redis服务
102 0
|
4月前
|
canal 缓存 关系型数据库
Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性
canal [kə'næl] ,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。其诞生的背景是早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
100 0
|
4月前
|
XML 存储 小程序
基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十四)
基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十四)
|
4月前
|
存储 小程序
基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十三)
基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十三)
|
4月前
|
小程序 测试技术 数据库
基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十二)
基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十二)