2022-03-25 11:03

Springboot+Vue前后端数据交互示例demo

wanmatea

JavaEE

(2291)

(0)

收藏

一、后端

1、创建Springboot项目

在IDEA中新建一个Springboot项目

image.png 

然后勾选Spring Web的依赖。

image.png 

然后点击Finish,项目创建完成。

2、添加控制器

新建一个控制器HelloController,然后添加下面的代码

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello wanmait";
    }
}

3、启动IDEA项目

点击右上角绿色箭头启动项目

image.png 

项目正常启动如下图:

image.png 

二、前端

首先,创建一个Vue项目,创建方法可以参考我之前写的:

 https://www.wanmait.com/note/shaowei/javaee/e6e45814929347b2b50b88457733a59b.html

然后在首页index.html中添加下面的代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>springboot+vue前后端交互hellworld示例代码</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  </head>
  <body>
    <div id="box">
      {{msg}}
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#box',
        data: {
          msg:""
        },
        methods: {
          // 发送ajax请求,获取用户列表
          loadData: function() {
            var that = this;
            axios.get('http://localhost:8080/hello')
              .then(function (response) {
                var data = response.data;
                app.msg=data;
              })
              .catch(function (error) {
                console.log(error);
              });
          }
        },
        mounted: function() {
          // 页面加载执行方法
          this.loadData();
        }
      });
    </script>
  </body>
</html>


然后在终端Terminal中输入命令npm run dev 启动Vue项目

image.png 

项目启动完成如下图:

image.png 

打开浏览器,访问网址:http://localhost:8081

此时,页面什么都没有输出,控制台报了一个错误

image.png 

这是跨域请求的问题

解决这个问题,需要在后端项目中新添加一个类CoreConfig

@Configuration
public class CorsConfig implements WebMvcConfigurer {
 
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        /*
         * 一小时内不需要再预检
         */
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowCredentials(true)
                .allowedHeaders(CorsConfiguration.ALL)
                .allowedMethods(CorsConfiguration.ALL)
                .maxAge(3600);
    }
}

然后重新启动后端项目

image.png 

image.png 

然后刷新前端页面

现在就可以正常在页面上输出

image.png 

 

至此,我们成功使用Springboot和Vue进行的数据的交互。

0条评论

点击登录参与评论