在Vue+Spring Boot项目中Axios跨域接收后端发送的数据

需要导入Axios插件https://www.axios-http.cn/docs/intro

npm install axios

Vue部分

首先在/src/main.js里配置

//Axios
import Axios from 'axios';
    //Axios global configuration
    //默认路径
    Axios.defaults.baseURL='/api'
   //设置post请求的内容类型,为json格式
    Axios.defaults.headers.post['Content-Type']='application/json'

第二步在/config/index.js下为刚刚设置的baseURL=‘默认路径’即’/api‘进行跨区改造


 proxyTable: {
      //axios跨域改造
      '/api': {
        target:'http://localhost:8000', // 你请求的第三方接口
        // 在本地会创建一个虚拟服务端,然后发送请求的数据,
        // 并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
        changeOrigin:true, 
        pathRewrite:{ 
         // 路径重写,是配置往target接口的重定向匹配的
          //相当于把当前端口的target请求localhost:8001/api/xxx,在跨域的时候,把/api替换成'^/api'的值''.
          //这时一个请求localhost:8001/api/xxx会变成http://localhost:8000/xxx
          //如果不配置pathRewrite 请求就被转发到 http://XX.XX.XX.XX:8000 并把相应uri带上。
          //比如:localhost:8001/api/xxx 会被转发到http://localhost:8000/xxx
          '^/api': ''  
        }
      }
    }
 }

Vue组件中的调用

<template>
  <button @click="Click">点我</button>
</template>


<script>

import axios from "axios";
export default {
  name: "table",
  methods: {
    getMsg:function (){
        //发出get请求, 后续的.then()处理数据,
      // then中用箭头函数的形式,因为后续要处理到data中的msg变量
      //因为使用箭头函数没有对 this 的绑定。
      axios.get('/getMsg').then((res) =>{
      //获取数据
        this.msg=res.data
          //获取请求状态
        console.log(res.status)
      }).catch(function (err){
        console.log(err)
      })
    }
    Click() {
      console.log(this.msg);
    },
 }data() {
 	return {
 		msg:''
 	}
  },
 mounted() {
     this.getMsg();
 }
</script>

Spring Boot部分

首先是配置SpringBoot项目运行的端口号,和Vue那边配置的跨域端口号一样

server:
  port: 8000

然后是controller

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class testController {

    @RequestMapping("/getMsg")
    public String getMsg(){
        return "Hello,Vue SpringBoot Connect By Axios";
    }
}

最后把两个项目分别打开
可以看到控制台输出了200,说明跨域请求成功
然后点击按钮输出了spring boot 中返回的那段话
在这里插入图片描述
实际应用中后端发送数据要加上Json格式转化,前端处理数据时要加上Json格式数据解析

<think> 首先,用户的问题是基于提供的引用,说明他们想知道如何在前端使用Vue后端使用SSM(Spring, SpringMVC, MyBatis)和Spring Boot数据库使用MySQL,进行整合开发方案。用户已经提供了几个引用,我需要参考这些引用,但注意系统指令中说:"上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。" 然而,在这个对话中,这是用户的第一个问题,所以我需要基于给定的引用和系统指令来回答。 系统指令强调: - 回答必须使用中文。 - 生成相关问题。 - 回答结构清晰,帮助用户逐步解决问题。 - 在回答中引用的段落末尾自然地添加引用标识,例如:[^1]。 - 对于数学表达式,使用指定格式,但在这个上下文中可能不适用,因为主题是软件开发,不是数学。 用户的查询:"我想了解前端使用Vue后端使用SSM和Spring Boot数据库使用MySQL的相关技术内容,如开发方案、整合方法等 请问前端Vue后端SSM、Spring Boot以及数据库MySQL的整合开发方案" 引用内容: - [^1]: 提到开发工具和框架:Idea/Eclipse, MySQL, Maven, Vue/Element, Spring+SpringMVC+MyBatis+SpringBoot。 - [^2]: 描述了从Java学到SSM和Vue开发学生管理系统,使用JDBC到MySQL,再到前后端分离部署。 - [^3]: 快速上手教程,使用Vue+Element+Spring Boot+MyBatis+MySQL进行前后端分离开发。 - [^4]: 讨论Spring BootVue.js全栈开发,包括项目搭建、集成、交互、部署等。 我的回答需要: 1. **结构清晰**:逐步解释整合开发方案。 2. **参考引用**:在适当的地方添加引用标识。 3. **使用中文**。 4. **生成相关问题**:在末尾添加相关问题部分。 整合开发方案的关键点: - **前端**:Vue.js + Element UI(从引用[^1], [^2], [^3])。 - **后端**:SSM (Spring, SpringMVC, MyBatis) 和 Spring Boot(从引用[^1], [^2], [^3])。 - **数据库**:MySQL(从所有引用)。 - **前后端分离**:强调这种模式(从引用[^3], [^4])。 步骤分解整合方案: 1. **环境搭建**:设置开发工具(如Idea)、依赖管理(Maven)。 2. **后端开发**: - 使用Spring Boot简化配置。 - 集成SSM:Spring MVC用于Web层,MyBatis用于数据访问。 - MySQL数据库连接:配置数据源、DAO层。 3. **前端开发**: - Vue.js框架。 - Element UI组件库。 - 通过Axios等与后端API交互。 4. **前后端整合**: - API设计(RESTful)。 - 问题解决(CORS)。 - 数据交互(JSON格式)。 5. **项目部署**:服务器部署、前后端分离部署策略。 6. **全栈开发流程**:构建、测试、优化。 确保回答真实可靠: - 基于标准实践和引用中的信息。 - 添加引用标识在关键点末尾。 结构回答: - 引言:概述方案。 - 逐步详解各部分。 - 结论或总结。 - 相关问题部分。 最后,添加相关问题: - 参考示例中的格式:"§§相关问题§§" followed by numbered questions. 由于系统指令要求生成相关问题,我需要基于内容创建。 </think> 以下基于您提供的参考文献和我的专业知识,我将详细介绍前端使用Vue.js后端使用SSM(Spring + SpringMVC + MyBatis)和Spring Boot数据库使用MySQL的整合开发方案。这种模式是现代Web开发的主流,实现了前后端分离,提高了开发效率和可维护性。我会逐步分解方案,确保内容清晰、实用,并参考您提供的引用(在相关段落末尾添加引用标识)。方案核心包括环境搭建、前后端开发、整合方法及部署流程,所有内容均基于真实项目的实践总结。 ### 整合开发方案详解 #### 1. **环境准备与工具选择** - **开发工具**:推荐使用 IntelliJ IDEA 或 Eclipse(支持Spring BootVue插件),确保高效编码和调试[^1]。 - **依赖管理**:使用 Maven 管理后端依赖(如Spring Boot starter、MyBatis等),前端使用 npm 或 yarn 管理Vue和Element UI包[^1]。 - **数据库**:MySQL 作为关系型数据库,确保安装并配置好(如默认端口3306)。 - **前后端分离基础**:后端通过Spring Boot提供RESTful API,前端Vue通过HTTP请求交互数据,实现解耦[^3]。 - *关键配置*: - 后端:创建Spring Boot项目(使用Spring Initializr),添加依赖(如`spring-boot-starter-web`, `mybatis-spring-boot-starter`, `mysql-connector-java`)。 - 前端:使用Vue CLI初始化项目,安装Element UI和Axios(用于HTTP请求)。 #### 2. **后端开发(SSM + Spring Boot)** Spring Boot 简化了Spring和SSM的配置,MyBatis处理数据库操作。整个过程基于MVC架构: - **数据库连接**: - 配置MySQL数据源:在`application.properties`文件中设置数据库URL、用户名和密码,例如: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=your_password ``` - 使用MyBatis ORM映射:创建实体类(Entity)、Mapper接口和XML文件,实现增删改查操作(如学生管理系统的用户表操作)[^2]。 - **业务逻辑层**: - Service层:定义业务逻辑接口和实现类,例如`UserService`处理用户验证。 - Controller层:使用Spring MVC的`@RestController`注解定义API端点,返回JSON数据: ```java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserService userService; @GetMapping public List<User> getAllUsers() { return userService.findAll(); } } ``` - **集成Spring Boot优势**:自动配置减少了XML配置,启动类加`@SpringBootApplication`即可运行[^4]。测试工具如Postman验证API(如GET `/api/users`)。 - *注意点*:处理事务管理(`@Transactional`)和异常处理,确保数据一致性[^3]。 #### 3. **前端开发(Vue + Element UI)** Vue.js负责UI交互,Element UI提供组件库: - **项目初始化**: - 使用Vue CLI创建项目:`vue create frontend-project`,安装Element UI(`vue add element`)。 - 页面组件:基于.vue文件开发,如`UserList.vue`显示用户数据。 - **数据交互**: - 使用Axios调用后端API:配置base URL和拦截器处理HTTP请求,例如: ```javascript // 在src/utils/http.js import axios from 'axios'; const api = axios.create({ baseURL: 'http://localhost:8080/api', // 后端API地址 timeout: 5000 }); export default api; // 在组件中 import api from '@/utils/http'; export default { data() { return { users: [] }; }, mounted() { api.get('/users').then(response => { this.users = response.data; }); } } ``` - 问题解决:后端添加CORS配置(如Spring Boot的`@CrossOrigin`注解或全局过滤器)[^4]。 - **UI设计**:Element UI组件(如表单、按钮)快速构建响应式页面: ```vue <template> <el-table :data="users"> <el-table-column prop="name" label="姓名"></el-table-column> </el-table> </template> ``` - *优点*:Vue的组件化开发提升复用性,Element UI简化布局[^2]。 #### 4. **前后端整合与交互** - **API设计**:遵循RESTful风格,定义清晰的数据格式(JSON),如用户对象:`{ id: 1, name: "张三" }`。 - **开发流程整合**: - 开发阶段:前端运行`npm run serve`(默认3000端口),后端运行Spring Boot(默认8080端口),通过代理或Axios交互。 - 调试工具:浏览器DevTools检查网络请求,后端日志监控错误。 - **数据传输**:使用DTO(Data Transfer Object)封装数据,避免前端直接操作数据库实体[^4]。 #### 5. **项目构建与部署** - **构建**: - 前端:运行`npm run build`生成静态文件(dist目录)。 - 后端:Maven打包为JAR文件(`mvn clean package`)。 - **部署**: - 服务器环境:Linux服务器(如Nginx托管前端静态文件),Tomcat或直接运行Spring Boot JAR[^2]。 - 数据库部署:MySQL服务器配置远程连接。 - 前后端分离部署:Nginx反向代理路由请求(前端路由到dist,API路由到后端服务)[^3]。 - *优化建议*:使用Docker容器化部署提升一致性,添加监控(如Spring Boot Actuator)[^4]。 #### 6. **优缺点与最佳实践** - **优点**:前后端独立开发,加快迭代;Spring Boot简化后端Vue提升用户体验;MySQL稳定可靠[^3]。 - **挑战**:问题、API版本管理、性能优化(如MyBatis缓存)[^4]。 - **初学者建议**:从简单项目入手(如学生管理系统),逐步添加功能,参考实战教程加速学习[^2]。 通过以上方案,您可在1-2周内搭建完整项目(如学生管理系统),实现高效开发。如需代码示例或更详细配置,可参考具体引用教程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值