SpringBoot结合Vue3实现简单的前后端交互

 更新时间:2023年08月24日 11:48:44   作者:zhang2383906154  
本文主要介绍了SpringBoot结合Vue3实现简单的前后端交互,结合实际案例,说明了如何实现前后端数据的交互,具有一定的 参考价值,感兴趣的可以了解一下

前端:Vue3

创建项目:

npm create vue@latest
> cd <your-project-name>
> npm install
> npm run dev

项目结构图如下:

1、查看入口文件内容:main.js

代码如下:

import './assets/main.css'
import { createApp } from 'vue'
import App from './App.vue'
import router  from '@/router'
//import axios from 'axios'
// console.log(App)
const app = createApp(App)
//app.config.globalProperties.$axios = axios
app.use(router)
// app.use(axios)
app.mount('#app')

在main.js中,首先引入了Vue组件和APP根组件

2、APP跟组件代码如下:

<template>
    <div id="app">
      <!-- App跟组件 -->
      <router-view></router-view>
    </div>
</template>
<script setup>
    name: 'app'
</script>
<style scoped>
</style>

3、路由文件配置:router/index.js

代码如下:

import { createRouter,createWebHistory } from 'vue-router'
import Login from '../components/Login.vue' //引用Login组件
const routes = [
    {path: '/',redirect: '/login'},
    {path: '/login',component: Login}, //定义访问页面的路由地址
]
const router = createRouter({
    history:createWebHistory(),
    routes,
})
export default router

4、Axios请求公共方法:utils/axios.js

代码如下:

import axios from 'axios'
//创建axios实例
const axiosInstance = axios.create({
    //api的BaseUrl 
    baseURL : '/aa',
    setTimeout: 5000, //设置超时时间
    responseType: 'json',
    withDefaults : true, //是否允许带cookie这些
    headers: {
        'Content-Type' : 'application/json;charset=utf-8',
        'x-token' : '777'
    }
});
export default axiosInstance

5、测试消息页面:components/Login.vue

代码如下:

<template>
  <header>
    <img alt="Vue logo" class="logo" src="../assets/logo.svg" width="125" height="125" />
    <div class="wrapper">
        登录组件:
        {{ msg }}
        <button onclick="login"> axios</button>
    </div>
  </header>
</template>
<script>
import axiosInstance from '../utils/Axios'
  export default {
      data(){
          return {
            msg : '开始'
          }
      },
      mounted(){
        axiosInstance.get('login/login')
        .then(response =>{
            //处理响应数据
            console.log(response.data);
            this.msg = response.data;
        })
        .catch(error =>{
            //处理错误消息
            console.error(error);
        })
      }
  }
</script>
<!-- 支持less语法格式 scoped代表样式只在本组件中起作用 lang="less" -->
<style scoped>
</style>

6、无代理情况向后端发请求会有跨域的问题:

代码如下:

import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'node:path'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server: {
      proxy: {
        //需要代理的路径
        '/aa': {
            //目标服务器的地址
            target: 'http://localhost:9100/',
            //是否要将请求中的路径重写
            rewrite: path => path.replace(/^\/api/,''),
            //是否要改变代理的源地址
            changeOrigin: true,
            //其他可选的代理配置
        }
      }
  }
})

后端代码:

引入的jar包:

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

测试代码:

@RestController
@RequestMapping("/login")
public class Login {
    @RequestMapping("/login")
    public String login(){
        return "登录成功";
    }
}

 到此这篇关于SpringBoot结合Vue3实现简单的前后端交互的文章就介绍到这了,更多相关SpringBoot Vue3前后端交互内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用vuex较为优雅的实现一个购物车功能的示例代码

    使用vuex较为优雅的实现一个购物车功能的示例代码

    这篇文章主要介绍了使用vuex较为优雅的实现一个购物车功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Vue中android4.4不兼容问题的解决方法

    Vue中android4.4不兼容问题的解决方法

    这篇文章主要介绍了Vue中android4.4不兼容问题的解决方法,需要的朋友可以参考下
    2018-09-09
  • Element-ui DatePicker日期选择器基础用法示例

    Element-ui DatePicker日期选择器基础用法示例

    这篇文章主要为大家介绍了Element-ui DatePicker日期选择器基础用法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Vue + Vue-router 同名路由切换数据不更新的方法

    Vue + Vue-router 同名路由切换数据不更新的方法

    本篇文章主要介绍了Vue + Vue-router 同名路由切换数据不更新的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • vue3使用flv.js播放flv直播流的代码示例

    vue3使用flv.js播放flv直播流的代码示例

    这篇文章主要介绍了vue3使用flv.js播放flv直播流的相关资料,详细描述了安装flv.js和编写HTML、JavaScript代码的过程,包括在页面关闭时销毁播放器的操作,需要的朋友可以参考下
    2025-05-05
  • Vue3+Vite项目部署后刷新白屏问题的解决方法

    Vue3+Vite项目部署后刷新白屏问题的解决方法

    Vue3 + Vite 项目部署后出现了手动刷新页面时出现白屏的问题,下面小编就来和大家探讨一下白屏出现的原因以及具体的解决方法,需要的可以参考下
    2025-03-03
  • Vue3中使用混入(Mixin)的示例详解

    Vue3中使用混入(Mixin)的示例详解

    混入(Mixin)是 Vue 中一种代码复用的模式,允许将组件的选项抽离为独立模块,下面就跟随小编一起来深入了解下如何在Vue3中使用混入Mixin吧
    2025-03-03
  • vue3的组件通信&v-model使用实例详解

    vue3的组件通信&v-model使用实例详解

    props 主要用于父组件向子组件通信,再父组件中通过使用:msg='msg'绑定需要传给子组件的属性值,然后再在子组件中用props接收该属性值,这篇文章主要介绍了vue3的组件通信&v-model使用,需要的朋友可以参考下
    2024-05-05
  • vue-pdf如何通过文件流预览pdf文件

    vue-pdf如何通过文件流预览pdf文件

    这篇文章主要介绍了vue-pdf如何通过文件流预览pdf文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue中keep-alive组件的用法示例

    vue中keep-alive组件的用法示例

    众所周知keep-alive是Vue提供的一个抽象组件,主要是用来对组件进行缓存,从而做到节省性能,这篇文章主要给大家介绍了关于vue中keep-alive组件用法的相关资料,需要的朋友可以参考下
    2021-05-05

最新评论