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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
对象存储 OSS,20GB 3个月
云数据库 Tair(兼容Redis),内存型 2GB
简介: 前后端分离项目知识汇总(阿里云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

相关文章
|
2月前
|
NoSQL Java Redis
springCloud中将redis共用到common模块
通过将Redis配置和操作服务提取到Common模块,可以在Spring Cloud微服务架构中实现高效的代码复用和统一管理。这种设计不仅简化了各个服务的配置和依赖管理,还提高了代码的可维护性和可读性。希望本文对你在Spring Cloud项目中集成和使用Redis有所帮助。
94 0
|
4月前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
8月前
|
消息中间件 存储 NoSQL
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
|
8月前
|
NoSQL Java 微服务
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)-3
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)
231 1
|
8月前
|
canal 缓存 关系型数据库
Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性
canal [kə'næl] ,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。其诞生的背景是早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
300 0
|
6月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
2月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
5月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
|
6月前
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
存储 运维 安全
阿里云OSS的优势
【7月更文挑战第19天】阿里云OSS的优势
249 2