springboot+vue前后端连接(基于idea+vscode)

注:本文前提是您已分别顺利跑通springboot和vue框架

Vue框架中处理(vscode):

App.vue部分代码如下:

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <Test></Test>
  <div>
    <ul>
      <li v-for="user in users" :key="user.id">
        ID: {{ user.id }},用户名: {{ user.user }},密码: {{ user.password }}
      </li>
    </ul>
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'
import Test from './components/test/Test.vue'
import axios from 'axios'

export default {
  name: 'App',
  components: {
    HelloWorld,
    Test
  },
  data() {
    return {
      users: [] // 用于保存用户信息
    };
  },
  created() {    //参考vue生命周期,此处是创建过程
    axios.get('http://localhost:8080/findAllUser')
      .then(response => {
        this.users = response.data;
      })
      .catch(error => {
        console.log(error);
      });
  }
}
</script>

关于axios的相关知识,可以参考其他文章(也可用ajax)

后端跨域配置处理(idea):

关于跨域:注意application.yml配置文件中

server:
  port: 8080

如采用上述设置,启动springboot时url为localhost:8080,但不同于传统的springweb项目,此时若启动vue,其服务端口不为8080(默认情况下8080已被占用则会顺延至8081),此时就需要进行跨域配置。

跨域配置方法如下:

1.全局配置跨域请求

创建一个config类,代码如下

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {//cors跨域配置
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedHeaders("*")
                .allowedMethods("*")
                .allowCredentials(true);
    }
}

2.采用过滤器(filter)的方式

@Component
public class CORSFilter implements Filter {
 
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletResponse res = (HttpServletResponse) response;
        res.addHeader("Access-Control-Allow-Credentials", "true");
        res.addHeader("Access-Control-Allow-Origin", "*");
        res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
        res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");
        if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) {
            response.getWriter().println("ok");
            return;
        }
        chain.doFilter(request, response);
    }
    @Override
    public void destroy() {
    }
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

3.配置文件配置(?)

注:此方法配置后可能报错未返回Access-Control-Allow-Origin,截止发布日期本人依然没跑通这个报错,仅供参考

spring:
  mvc:
    cors:
      allowed-origins: http://example.com
      allowed-methods: GET,POST,PUT,DELETE
      allowed-headers: *
      allow-credentials: true
      max-age: 3600

配置结束后同时启动springboot和vue,即可实现前后端连接

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
IdeaSpringBootVue.js是一个流行的技术栈组合,用于构建现代化的Web应用。它们之间的交互通常通过以下步骤实现: 1. **SpringBoot** (后端): - SpringBoot是基于Spring框架的快速开发工具,提供了一系列预配置的组件,简化了构建生产级Web应用的过程。 - 它处理服务器端逻辑,包括RESTful API的创建,如控制器(Controller)负责处理HTTP请求和返回JSON响应。 2. **Vue.js** (前端): - Vue.js是一个轻量级的JavaScript框架,专注于视图层,易于上手且性能优秀。 - 使用Vue.js,你可以创建可复用的组件(Component),这些组件通过前端路由(如vue-router)进行管理,用户界面与后端API数据进行绑定。 3. **前后端交互**: - **API调用**:当前端用户触发某个操作(点击按钮等),Vue.js组件会发送HTTP请求到SpringBoot提供的API路径(例如`/api/users`)。 - **JSON数据交换**:SpringBoot接收到请求后,执行相应的业务逻辑,如有必要查询数据库或执行其他操作,然后返回JSON格式的数据。 - **Vue.js处理响应**:前端收到数据后,更新页面状态(可能是局部刷新或整个页面重载),展示数据给用户。 具体步骤如下: - 在SpringBoot中,创建Controller并定义处理HTTP请求的方法,比如`@GetMapping("/users") public User[] getUsers() { ... }` - 在Vue.js组件的`methods`中编写函数,使用axios库发送GET或POST请求到SpringBoot的API地址,并处理返回的响应数据。 - 使用Vue.js的响应式系统,如`v-model`,将后端数据绑定到UI元素上。 相关问题--: 1. SpringBoot如何暴露RESTful API? 2. Vue.js的生命周期钩子如何配合API调用? 3. 如何保证前后端分离项目的同步与异步交互?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值