SpringBoot+Vue前后端分离
Demo效果
数据中有一段数据: 通过SpringBoot输出到页面中是这个样子: 而Vue界面现实的效果如图: 使用热部署,即在后端修改数据,不用重启应用端,便可在前端及时得到更新的数据
创建Vue 项目
在文件夹中新建一个空的目录,然后进入cmd界面。 输入以下命令:
npm init webpack 项目名字
然后是一些相关配置,勾选热部署和vue-router,并初始化,然后使用idea打开这个项目。 比较详细一点的Vue入门配置参考我的这篇文章: 创建一个Vue组件:Book.vue
data里面的数据为前端伪造的数据,目的是测试代码,测试效果如下:
前端代码编写代码暂时到这,接下来后端代码。
创建后端项目
首先创建一个Spring Boot项目,勾选模块如下: 然后编写业务代码,项目结构如下: application.yml配置文件:
spring: datasource: username: root url: jdbc:mysql://localhost:3306/mybatis01?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai password: 0913 driver-class-name: com.mysql.cj.jdbc.Driver server: port: 8181 mybatis: mapper-locations: classpath:mapper/*.xml
BookController里的代码:
package com.lzx.controller; import com.lzx.pojo.Book; import com.lzx.server.BookServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @Author 小先生 * @Date 2021年05月31日11:31 */ @RestController @RequestMapping("/book") public class BookController { @Autowired BookServiceImpl bookService; @GetMapping("/findAll") public List<Book> findAll(){ return bookService.findAll(); } }
启动Spring Boot项目,在搜索栏输入localhost:8181/book/findAll,页面即返回数据库的信息
前后端互相关联
跨域设置
此时前端项目和后端项目都已经启动成功,但是互不影响,没有关联。且两个项目端口号不一致,因此前提还需要跨域。跨域设置前后都可以设置,这里在后端进行设置。 再次编写后端代码,编写CrossConfig:
package com.lzx.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * @Author 小先生 * @Date 2021年05月31日11:59 * 跨域 */ @Configuration public class CrosConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOriginPatterns("*") .allowedMethods("GET","HEAD","PUT","DELETE","OPTIONS") .allowCredentials(true) .maxAge(3600) .allowedHeaders("*"); } }
修改前端 首先引入axios,输入命令行:
npm install axios --save -dev
然后在main.js中添加:
import axios from “axios”; Vue.prototype.axios = axios;
再修改Book.vue组件:
这时候前端和后端项目就此关联起来了