【带时间戳】本笔记已完结!
【老师的微信公众号有免费的课件和文档,关注“软件练习生”公众号回复“Java”获取课件资料。关注回复关键字就可以(不会让你加群/微信的)】
【P1配置和下载文件居多,就不写了】
【有能力的朋友多多支持up拿完整的课件代码。本笔记代码部分不全,纯手打,会放在个人网站上,而且github有时候会加载不出来,我自己手打是因为手打记忆才深刻】
【https://b1ankc-mov.github.io/#】
【https://github.com/B1ANKC-MOV/SpringVue】
P2.SpringBootk快速上手,【】内为个人评论
2.SpringBoot快速上手 P2 - 00:00 Springboot的介绍
Springboot的介绍
Springboot旨在简化SSM(Spring\SpringMVC\Mybatis)的配置过程
2.SpringBoot快速上手 P2 - 02:34 Springboot的特点
Springboot的特点
之所以能够简化操作,Springboot做到了:
“约定优于配置”,用大量的默认配置代替手动配置的过程
使用内嵌的Tomcat,用户无须再手动打包war文件让服务器使用
定制Staters启动器,简化了Maven配置(帮你配置好了)。简化以前可能需要写几十个依赖的情况。(现在写一两个即可)
使用纯Java配置
后续维护时,Springboot提供了各种监控检测功能
(如若需要开发复杂项目还需继续学习Spring【不过Springboot完全够用了,除非是接口几千个的大项目,可能要考虑到后续并发量之类的问题,Springboot作为一个比较单体的东西,可能确实是不太应付得来】)
2.SpringBoot快速上手 P2 - 06:44 创建Springboot应用
创建Springboot应用
(up用的IDEA2020.3)
2.SpringBoot快速上手 P2 - 08:00 创建
创建:
Group处一般输入公司域名
Artifact处输入项目名称
SDK:1.8
Java version:8【没办法选择Java8的朋友可以把左上角的Server URL改成https://start.aliyun.com/,具体可以参考这篇文章[https://blog.csdn.net/imbzz/article/details/134691177]】
Web→Spring Web
选择存放位置
右下角会显示下载依赖的进度条,如果持续太久了可能是Settings→Build,Execution,Deployment→Build Tools→Maven里的配置路径出了问题(需要修改过阿里云镜像,要不然就很慢)

2.SpringBoot快速上手 P2 - 10:21 基本结构
基本结构:(基于maven)
代码位于src下的java目录
resources下放置一些资源(自动放了一些文件夹和配置目录)static放置网站的静态资源,templates放置网站的html之类的模板,application.properties为重要的配置文件(但springboot无需配置)
test为java的测试
pom.xml【???为什么我没有这个文件】【二编有了,我下了2021的idea】
parent标签,可以认为是一个副级的项目,我们现在就是依赖于这个项目,不需要多做配置
dependencies,加入了一个依赖
main→java→com.example.xxx是主包,后续我们要写什么都需要放进主包
启动程序为主包下的xxxApplication类
2.SpringBoot快速上手 P2 - 13:52 操作
操作:
在主包下创建controller包,创建xxxController类
在类中做@RestController标记以让此类变为控制器,可以接收客户端的请求
具体如何接收需要在类中加入(公开的)方法(返回值设置成了文本):pubilic String xxx(){ return "hello world";}。期望为浏览器访问后端时,能够看到此字符串。
加入一个注解:@GetMapping("/xxx")。效果为浏览器可以发送http里的get请求来访问xxx()方法,具体访问方法时需要明确的链接地址:/xxx。
浏览器如何访问?浏览器会固定使用http://的协议,后加一个域名,再往后是具体路径/path:http://localhost:8080/path。上面的/xxx就是此处的路径,这样就可以访问刚刚写的方法(默认localhost:80,但80是可以省略的,一般访问本地主机就写成localhost,但是Tomcat访问的是8080端口,所以需要写成localhost:8080)。
2.SpringBoot快速上手 P2 - 17:45 启动
启动:
找到xxxApplication启动类,启动程序
会在启动台里看见Springboot的标志
在浏览器输入localhost:8080/xxx
修改一定要重启项目(可以通过热部署解决)
2.SpringBoot快速上手 P2 - 20:14 热部署介绍
开发环境热部署
在pom.xml中加入依赖

在右上角的小按钮点一下,下载依赖
加一些配置~


IDEA的配置【2021版本设置在Settings→Advanced Settings→Comiler里面】↓

P3.Springboot Controller
3.SpringBoot Controller P3 - 00:30 Web入门
Web入门
Spring Web提供了启动器starter,主要包含了三个组件:mvc、json、tomcat。
webmvc组件主要提供web开发的注解,(类似于控制器的注解)是web开发的基础框架
json组件主要提供了JSON数据的解析,使能够接收前端发送数据并返回
tomcat为自带的容器依赖
3.SpringBoot Controller P3 - 02:03 控制器介绍
控制器
mvc为后端开发的一种模式:m为Model,用于存储手法数据;c为Controller,用于协调控制;v为View(视图),是用来显示数据的。
在mvc模式下,从数据库中加载的数据首先被封装在Model中,通过Controller,绑定到View上(视图可以理解为html的页面)。所以控制器负责接收将数据交给浏览器与接收用户请求。用户操作时,实际上是对控制器发出请求,控制器取用数据,交给视图,最终响应给用户。

既有页面又有数据:Controller(无法前后端分离)
只有数据:RestController。RestController会将返回的对象数据转换为JSON格式(为了方便前端处理)。
3.SpringBoot Controller P3 - 06:29 路由映射
路由映射(控制器如何接收前端的请求)
RequestMapping(可以用在类或者方法上,上节课用在了方法上)
value参数:用于配置路径,支持普通字符串与正则表达式。可以规定前端用什么方法请求(比如get或post)
……↓

value的参数内容:

method的参数内容:

3.SpringBoot Controller P3 - 10:07 实际操作
实际操作
使用RequestMapping

加入value值:/hello。使hello方法能够接收前端的请求,前端通过/hello路径能够访问到该方法。(在地址栏里面发送的请求都是get请求)
规定方法:加入method=RequestMethod.GET,规定只能通过get请求。(@RequestMapping(value="/hello",method=RequestMethod.GET等价于@GetMapping("/hello"))
3.SpringBoot Controller P3 - 13:10 参数传递
参数传递

@RequestParam可以将前端的数据绑定到控制器的方法上以获取前端传递的信息。
在方法里面加入一个参数:String nickname。自动将前端输入的昵称传入nickname中。

多个数据可以用&连接

3.SpringBoot Controller P3 - 16:06 控制器讲解
讲解控制器
传参与定义参数名不一致,可以在前面加@RequestParam("nickname")(代表参数映射,加上这个注解,就代表这个参数是必须的,如果希望可选,可以再加required = false)(如果必须,没输入会报错,报错结果为status=400,一般意味着是客户端,也就是浏览器出了问题)
3.SpringBoot Controller P3 - 20:14 POST请求,APIPOST
模拟post请求(本来需要通过专门的前端程序或者表单)(这里可以通过APIPOST进行前端调试)

(在地址栏里面发送的是get请求,不能直接/postTest(post请求的方法),会有405(4开头一般是浏览器的问题))
JSON类型需要使用{}传递
如果需要接收JSON类型的数据需要加一个单独的注解@RequestBody
需要注意类型与参数名都要对的上

通配符(了解即可)/test/**,意味着/test/a/b/c都行。/test/*意味着只能/test/abcc。
P4.SpringBoot文件上传+拦截器
4.SpringBoot文件上传+拦截器 P4 - 00:23 静态资源访问
静态资源访问
前后端分离static是不会存放内容的
实操:
当没有配置静态资源时,直接“/”后接静态资源名称即可访问(localhost:8080/test.jpg)
如果不想放在根路径下直接访问,而希望在资源前面加一个统一路径images方便管理,可以通过static path设置虚拟路径(也叫过滤规则)

如果在resource下额外创建了一个文件,将静态资源放在自创文件css中,则需要通过static locations进行修改(classpath是整个项目的类路径,在target下的classes,是一个固定的目录)

4.SpringBoot文件上传+拦截器 P4 - 06:05 文件上传
文件上传原理

传输文件必须要把表单中的enctype(编码类型)改成form-data的类型。(修改后,例如表单中的字符串字段,还是使用文本形式进行传输;但如果上传的字段是文件,则会与上一个分开,用另外的形式上传)
修改一些默认配置(限制):

在控制器方法中加入一个特殊的参数MultipartFile(Spring用来接收文件的类型),通过此对象获取文件信息。

4.SpringBoot文件上传+拦截器 P4 - 11:19 实际操作
实操:
已有程序

如何动态获取web服务器所在位置(怎么去获取服务器对应路径):在方法里加入HttpServletRequest request参数(J2EE里面提供的原始类,此类代表网络请求,即前端发送的请求,一个request对象),通过此对象可以获取该对象的上下文对象(request.getServletContext,也就是该请求的上下文),其实也就是web服务器,通过web服务器得到对应的路径(getRealPath),其实就得到了web服务器运行的目录,将其存储在自创的虚拟的/upload/目录中。
status:500,意味着后端出了问题(up是文件太大了)
通过自定义函数savefile判断目录是否存在,如果不存在,则使用path与文件名创建目录,最后使用transferTo方法把文件传输到创建好的目录中。
想让用户通过刚刚创建好的目录访问文件:spring.web.resources/static-locations=/upload/
4.SpringBoot文件上传+拦截器 P4 - 23:58 拦截器
拦截器
对于不同控制器可能遇见的统一操作(例如获取用户名),做一个处理


用户提交的请求都先到达(自定义的)拦截器,调用prehandle,最终到控制器的目标方法中,到页面渲染结束,再调用afterCompletion
prehandle调用的最频繁(例如用户想要提交一个请求,但是没有登录,拦截器可以拦截下请求不让它直接到控制器调用方法,而是先登录)
定义拦截器一般会在后面加Interceptor(然后继承一个系统的拦截器类HandlerInterceptor)

拦截器还需要注册,否则无法使用(需要在Java类里面完成,继承WebMvcConfiguer,一个专门做配置器的类,对于刚才创建的拦截器进行一个Login,然后定义你需要拦截的路径)

4.SpringBoot文件上传+拦截器 P4 - 28:50 实际操作
实操(已有代码)

继承了HandlerInterceptor(Ctrl+单击进入具体代码):

up重写了prehandle方法,写完之后还需要配置才生效(此配置一般放在config下):创建一个类,加入注解Configuration使其生效(效果为Springboot会自动读取此类)

重写副类WebMvcConfigurer,里面提供了添加拦截器的方法:

重写addInterceptors方法,调用其传递的registry对象,添加一个拦截器,将刚才Login的拦截器进行new,最后加入拦截路径(不加的话就是拦截所有,可以不加)

P5.RESTful服务+Swagger
5.RESTful服务+Swagger P5 - 00:00 构建RESTful服务
RESTful介绍
RESTful是一种软件服务架构设计风格
RESTful特点
例如,将请求清晰分类,GET用于获取,POST用于新建,等等等等

RESTful API(符合此架构接口的必备特质)

在做BS架构程序时,想要符合RESTful风格,对应几种请求方法即可:



实际编程时如何实现RESTful风格:

URL中不要包含动词(传统的比如http://xxx/del?id=10,删除用户,但是RESTful需要delete http://xxx/user/10)

示例:(RESTful增删改查)(加{}意味其为动态,需要加入PathVariable注解)

5.RESTful服务+Swagger P5 - 12:18 实际操作
实操:

5.RESTful服务+Swagger P5 - 14:00 Swagger
Java内提供的测试工具

通过Swagger动态生成web接口文档(方便前端使用),也可以进行端口测试

在pom.xml加入依赖↑
然后做一个基本的配置↓(在config下创建一个SwaggerConfig配置类)

5.RESTful服务+Swagger P5 - 15:57 一闪而过的注意事项
这里的说明很重要↓!!

使用:


6.MybatisPlus快速上手 P6 - 00:00 MybatisPlus
ORM介绍

Mybatis-Plus介绍

添加依赖到pom.xml:(MybatisPlus其实依赖了Mybatis)(需要准备好Mysql数据库)

加入配置(在.properties):(使用什么连接池\数据库、数据库在哪、账号\密码、日志输出格式)(数据库的组件都在mapper包里,需要给出mapper包路径)
6.MybatisPlus快速上手 P6 - 07:55 配置实操


实操:
6.MybatisPlus快速上手 P6 - 10:22 实际操作
加入控制器

定义mapper相关的组件(要创建的是接口,不是类,名称都以要操作的表+mapper命名)(sql语句都用@注解来实现)
新建user类,存储表中有的字段。(按住alt+insert加入get/set方法)(再加一个toString方法)
加入注解使得方法生效@select("select * from user")(记得加入@mapper)
通过@autowired注入参数usermapper内容,再使用find()方法返回用户列表。


改成JSON

插入user对象

int insert()代表插入几条记录,插入失败返回值为0

mysql插入会自增
mybatis会自动帮助你增删改,不需要再自写方法了,只需要告诉其user类

mybatis-plus:当表明与类名不一样时@TableName("表名“),(以告知mybatis)如果需要id作为组件自增@TableId(type=IdType.AUTO)。

如果不加的话,数据库里面的id可能是自增的值,但是代码print不出来id的值
7.MybatisPlus多表查询及分页查询 P7 - 00:02 P7.多表/分页查询
P7.MybatisPlus多表查询及分页查询
多表查询(Mybatis)

实际使用:
要查同一用户下的所有订单:加入一个字段orders,字段orders并不存在,其属性为List集合,存放的是订单对象Orders。

这个字段需要自行映射:

前面意思是↑从数据库里面调取的id这一列需要赋值给user类中的id属性。关键在于映射orders:最后一行,标记需要使用id字段,需要映射orders,类型为集合list。还需要写一个方法:

many注解,意思是一个用户会有多个订单,后接需要调用哪个mapper的哪个方法。(对着mapper右键copy path选最后一个就行)。查询出来的订单最后传给了orders属性,就完成了映射。
如果我们需要查订单的用户:需要用one注解

条件查询:

分页查询

加一个配置类

P8.Vue框架快速上手
8.Vue框架快速上手 P8 - 00:01 Vue框架快速上手
需要前端基础html、css、js


MVVM基于MVC(Model-View-Controller)但是在Controller上作了修改


实操:
8.Vue框架快速上手 P8 - 11:36 实际操作
!+回车,生成代码,去代码copy链接↓

调用CreateApp的方法,且告知渲染至哪(扩展→Open in browser插件,run的时候就能从浏览器快速打开)

演示代码文件
8.Vue框架快速上手 P8 - 16:29 演示代码文件
“:”后为变量或表达式,属性的绑定需要加“:”,不加会变成字段。
P9.Vue组件化开发
9.Vue组件化开发 P9 - 08:01 组件化开发
NPM使用
9.Vue组件化开发 P9 - 08:44 NPM简介

Vue CLI使用
9.Vue组件化开发 P9 - 10:20 Vue CLI使用
1.下载Node.js

2.安装vue(网络问题可以先输入npm config set registry https://registry.npm.taobao.org
再安装)

3.vue create hello创建项目

4.选择第三个选项

5.按图示意选择配置

6.选择版本3.x
7.选择不存储预选(N)
9.Vue组件化开发 P9 - 15:47 vue项目文件解析
配置文件package.json(记录项目基本信息
src:写代码的目录
src下的main.js:主要用到模块化开发的思想(区别于组件化),目前前端项目基本通过import的方式导入各类模块。(早期的前端代码主要通过script标签去引入各类文件)
第一行:通过vue导入其createApp方法
第二行:导入了app.vue的app
调用createApp方法,把app传过去,同时将其mount到了#app标签上(标签在public的index.html里)



<template>:放组件的标签、文本、结构,放置了——
img标签
helloworld标签(自定义组件,在components里面,可以删掉自己写)
<script>:放组件的一些行为
<style>:放组件的一些css的样式
怎么运行:
找到package.json,运行其指令【npm run serve】
怎么自定义组件:
使用import导入
导入结束后进行注册(1.2.都放在<script>标签里)
自创建.vue文件创建组件
添加<template>、<script>、<style>标签
在标签里简单加入内容即可
(可以安装Vetur插件着色代码)
P10.第三方组件element-ui
10.第三方组件element-ui P10 - 00:32 组件间的传值
组件间的传值
组件可以由内部的Data提供数据,也可以由父组件通过prop的方式传值
兄弟组件之间可以通过Vuex等统一数据源提供数据共享
项目演示:
终端输入vue create component-demo
把Linter取消选中
选择Vue2
创建
Vue2与Vue3的差异(主要在main.js中):
Vue3通过create app创建Vue对象,Vue2通过new Vue创建Vue对象
Vue3使用的是.mount,Vue2使用的是.$mount
10.第三方组件element-ui P10 - 04:27 实际操作
【主要是打代码,代码会放在我自己的个人网站上,可以去看看】
10.第三方组件element-ui P10 - 17:37 Element-ui介绍
Element是国内饿了么公司提供的一套开源前端框架,简洁优雅,提供了Vue、React、Angular等多个版本。
文档地址:https://element.eleme.cn/#/zh-CN/
安装:npm i element-ui
引入Element

(如果node_modules没了,可以直接npm install重新下载依赖)
【接下来基本上是代码了,代码依旧放在个人网站】
第三方图标库
10.第三方组件element-ui P10 - 34:18 图标库

11.Axios网络请求 P11 - 00:03 Axios网络请求
Axios的使用
11.Axios网络请求 P11 - 00:32 Axios简介
Axios简介
主要是前端的一个网络请求框架,基本是基于Ajax

Axios的安装和导入
安装:npm install axios
导入:import axios from 'axios'
Axios是怎么发送请求的:
与Springboot的GetMapping对应
发送GET请求(通过url传参)

↑如果请求成功,系统会调用.then();如果请求失败或者出现了错误,则会调用.catch()。
.then()与.catch()就是promise相关的语法。
.then()内需要传入一个回调函数(function(response)),.catch()也需要传入一个回调函数(function(error)),这些都是定义的函数。
get请求如果想给后端传递数据,可以通过?String的方式传参(Springboot的时候说过);如果参数较多,可以通过params,即,在后面再传一个参,参数是对象,对象内可以放多种配置。
最后还可以加一个.then()方法,不论成功或失败都执行该方法。
发送POST请求(通过请求体传参)

用{}括起来,就会放在请求体内传参,而且需要注意的是:Axois会自动把请求体里面的数据转为JSON格式传送给后端。后端处理POST请求时,需要注意它是JSON的格式,作特殊的处理。
异步回调问题

JavaScript最新的标准里面,async和await的语法结构。
前面GET和POST都涉及了异步回调获取数据的形式。如果需要同步获取数据,则可以通过前面加一个async(方法内必须有配对的await)实现。
当方法前面加了async之后,发送异步请求的前面就可以加上await,无须再添加回调函数(即.then()),直接拿到响应。以同步的形式取代异步的编程。不过常用的还是上面的方式。

(更详细的配置项可以去官网文档查询)
11.Axios网络请求 P11 - 10:19 实操
实际操作

axios不能直接写在<script>标签内,因为网络请求下来的数据最终还是要交给data的。
目前虽然data中的电影信息是我们自己写的,但这些数据本应该是从数据库中查询出来交给前端的,最终再放在data里面去。
因为这个请求最终需要交给data,所以axios需要写在vue范围内(即export default{}内)。
Vue内部提供的一些生命周期的函数,即对于我们现在的组件App.vue来讲,从创建到加载、渲染、销毁,每一个阶段会有对应的函数。[例如: 该组件在程序运行时会被创建,接下来加载到界面(绑定/挂载到界面),当页面切换了(即切换到其他组件上了),该组件就会被销毁]
其中,created要和data平级(不能放在methods:里面,这里面放的是自定义的函数),当组件被创建的时候,created:function()会被自动调用。

还有一个类似的方法叫mounted,这个方法作用时间会稍微迟一点,被挂载(渲染到界面上)的时候调用。
其他的可以在vue官网上查看。
11.Axios网络请求 P11 - 16:12 和后端进行关联
首先,需要修改后端启动的端口:server.port=8088,再启动。
在created:function(){}里面写的axois.get("")←这个链接的发送需要有一个后端的接口,比如说,想要控制器查询所有的用户,url访问其中的一个控制器,localhost:8088/user/findAll,就能看见所有的数据。(如果要查看问题,可以右键→检查→network)
所以axois.get("")里面写↓

该处get请求一经发送,正好对应后端的@GetMapping,于是就拿到数据。(注意,虽然created先执行,但是里面的console.log()是异步回调函数,所以输出的文本先后并不代表方法调用的先后)

但是!还是会失败并报错的!
这是跨域问题引起的↓






11.Axios网络请求 P11 - 32:26 跨域实操
解决方法:在控制器之前加注解@CrossOrigin,使得控制器里面所有的方法都允许被跨域。要么就加一个配置类,使得所有的控制器都能被跨域。(加完之后重启服务器)

拿到以后渲染到界面上:赋值给data,把response.data取出来,显示到表格里面。直接this.tableData = response.data就可以了。

解决回调函数this作用域的限制:改写.成then(response)=>{}

每个组件都要导入axios,以及写相同的域名localhost:8088,可以抽出来进行整合。(在main.js里面做一个统一的导入)

实操:

使用:

P12.前端路由VueRouter
12.前端路由VueRouter P12 - 00:01 P12
VueRouter安装与使用

12.前端路由VueRouter P12 - 06:25 安装VueRouter

导入:

安装时需要指定@3
模拟网易云音乐界面
12.前端路由VueRouter P12 - 08:21 模拟网易云
创建组件

(无需注册)[因为最后会是动态的显示][VueRouter会进行链接]


设置链接和组件的对应关系
新建Router文件夹放置VueRouter的东西

新建JS文件

注册

导入组件

描述组件和链接的对应关系

插入占位标签

导入Routes


在new Vue里面做一个router设置

12.前端路由VueRouter P12 - 16:54 启动项目



嵌套路由

引入TopList

或者在定义路由的时候设置其子路由

前面要导入

一对多跳转


获取动态的id值:

两种导航

导航守卫

P13.状态管理VueX
13.状态管理VueX P13 - 00:03 状态管理VueX

13.状态管理VueX P13 - 02:34 官网

(使用的是Vuex3)
基本概念

整体理念

State








13.状态管理VueX P13 - 15:35 实际使用
13.状态管理VueX P13 - 16:33 安装

13.状态管理VueX P13 - 16:41 导入
13.状态管理VueX P13 - 17:11 创建store对象
这块的代码放在单独的文件夹(store)内

13.状态管理VueX P13 - 19:30 注入store

P14.前端数据模拟MockJS
14.前端数据模拟MockJS P14 - 00:00 前端数据模拟MockJS




14.前端数据模拟MockJS P14 - 06:59 演示已创建项目
14.前端数据模拟MockJS P14 - 10:32 项目运行
14.前端数据模拟MockJS P14 - 14:03 MockJS数据生成规则
P15.vue-element-admin后台集成方案
15.vue-element-admin后台集成方案 P15 - 00:10 本节内容
Vue-element-admin介绍

网址:https://panjiachen.github.io/vue-element-admin-site/zh/guide/
模板演示
15.vue-element-admin后台集成方案 P15 - 03:27 模板演示
1.集成模板


2.基础模板

下载安装

源码分析
此项目为单纯的前端项目,mock里面的文件模拟前端的请求,所有数据都使用mock进行了模拟)
test是做单元测试的,里面有两个比较重要的配置文件,.development与.production。在开发阶段,会读取.development文件,所有网络请求都是基于VUE_APP_BASE_API发送的,后面自行改造的时候需要改变。

在项目打包部署的时候,读取另外一个BASE_API

还有一个比较重要的全局配置文件package.json

取消ESLint



运行项目

运行流程(原理)
比较重要的目录:
store
vuex的东西,对全局进行管理,里面有分了模块

router
放置路由的位置,index.js里面定义了项目用到的所有路由。
views
放了(与页面相关的)各种各样的组件
src
下的components放了一些通用的组件(经常需要复用的组件)
api里面是封装的网络请求
layout里面是布局相关的(但一般不需要什么变化)
流程分析:
15.vue-element-admin后台集成方案 P15 - 16:03 流程分析
15.vue-element-admin后台集成方案 P15 - 16:06 登录
1.登录


@指src目录
所以最后渲染的是login下的index.vue
15.vue-element-admin后台集成方案 P15 - 25:45 TOKEN
15.vue-element-admin后台集成方案 P15 - 27:45 permission
P16.跨域认证
16.JWT跨域认证 P16 - 00:15 教学内容

Session认证



16.JWT跨域认证 P16 - 05:24 TOKEN认证
Token认证



16.JWT跨域认证 P16 - 07:44 JWT(具体如何实现TOKEN认证)







16.JWT跨域认证 P16 - 13:29 JWT的实现

里面有生成token的代码

验证

16.JWT跨域认证 P16 - 16:19 代码示例




测试


解析没问题会拿到中间的载荷

16.JWT跨域认证 P16 - 24:00 运行项目
分析




P17.SpringBoot+vue-element-template
前后端集成
17.SpringBoot+vue-element-template P17 - 00:01 前后端集成
修改BASE_API

修改url

17.SpringBoot+vue-element-template P17 - 10:38 演示已有代码

18.云服务器使用
18.阿里云服务器使用 P18 - 00:04 部署项目







P19.SpringBoot+Vue云端环境配置
19.SpringBoot+Vue云端环境配置 P19 - 00:14 P19

19.SpringBoot+Vue云端环境配置 P19 - 10:13 启动

20.SpringBoot+Vue项目云端部署 P20 - 00:01 项目打包部署

所有打包好的都会放在dist目录下

把dist目录放在web服务器上供客户访问。