Idea+springboot+vue 前后端交互实现

目录

1.工程建立

2.springboot和vue介绍

3.springboot和vue交互

4.总结


1.工程建立

首先在idea中分别建立好springboot和vue项目,工程建立参照我之前的博客:

idea中springboot项目建立:
Idea 搭建 springboot 项目_.'~'.的博客-CSDN博客

idea中vue项目建立:

Idea配置 vue 插件和 vue 项目的建立_.'~'.的博客-CSDN博客

2.springboot和vue介绍

通过前面的工程建立,我们分别实现了springboot对后台数据库的数据访问,vue实现基本的页面展示。

关于springboot和vue,下面谈谈我自己的理解(刚刚接触,可能有不太正确的认识),一开始不太了解这些目录结构和功能实现,springboot和vue交互的实现完全没头绪。

springboot:

 在以下目录中,基本实现了我们以什么方式去访问我们的数据库并得到我们的需要的数据

21f556b623fb480b907dabd455894b5d.png

controller文件夹下定义的是我们的页面访问方式,也可以通过调用接口获取数据等(这里也是和vue实现数据交互的主要地方),controller中的文件我认为可以理解为springboot项目运行的控制其,主导者整个项目的运行。

下图中 ① ②分别定义了路径访问index页面的父子路径:通过 http://localhost:8081/hello/test 即可访问到index页面(idea默认8080端口,我修改了),通过这个路径设置我们不仅可以实现对springboot中页面的访问的控制,也是后面和vue的交互实现的基础。

136c37dbfbfa44f28d3ba6b873891791.png

 vue:

 下面是vue项目的结构和主要的代码和配置文件的目录。

e1ebe4535a764eafb594c4ee95741297.png

components文件夹下是我们的vue布局代码,也就是界面代码。

router文件夹所在的红色方框里是vue项目的一些配置文件,主要配置vue项目的插件依赖和界面配置。

vue新建界面和在主界面使用链接访问的方法如下(和与springboot的交互无关):

1)在components文件夹下建立新的vue界面(.vue文件),注意name属性。

c109ad433be646b689c74ff6324ac9be.png

 2)在index.js文件中声明vue界面的访问路径

{
  path: '/userV',//声明访问路径:这里即设置的路径为:http://localhost:8080/userV
  name: "userV", //声明访问对象的名字。
  component: userV //声明访问的对象。
},

97039d98609f48e9badbb39933d4aea7.png

3)在主界面注入链接,之后我们运行vue就可以在主界面看到我们自己写的界面的链接,点击即可跳转。

734e9543f90343ffa77a5aa25d65a223.png

fb2fafeffb1e43d796c701b047cbc2a2.png

 vue和springboot的交互主要在 vue界面代码(.vue文件)中的 <script > </script >标签中完成。

3.springboot和vue交互

基本思路:vue使用 axios 插件进行跨域访问,进行数据请求。

                  springboot定义好访问路径和数据获取并返回数据给vue。

vue 使用axios:

在idea的terminal中输入 vue add axios 命令将axios下载到项目当中。

9ed8c58f78ed4d80870eb38232a2ea3a.png

 在mian.js中导入axios

e7ff6755f6c940ae85c4df63dd391f38.png

在 <script> </script>标签中设置好数据类型和axios获取数据的路径和方式。

eac626efbdc549fb9b96561afd12c32e.png

 5a6bef6f954747189379326e7c8f6aa0.png

 源码:

<template>
  <div>
    <table>
      <tr>
        <td>编号</td>
        <td>名字</td>
        <td>年龄</td>
      </tr>
        <td>{{users.id}}</td>
        <td>{{users.name}}</td>
        <td>{{users.age}}</td>
    </table>
  </div>
</template>
<script>
  export default {
    name: "usreV",
    data(){
      console.log('进入userV页面')
      return {
          users:[]
      }
    },
    created() {
      console.log('userV页面获取数据')
      var that=this;
      axios.get('http://localhost:8081/user/getJSON',{params:{id:1}}).then(function (resp) {
        that.users=resp.data;
        console.log('userV页面获取的数据为'+that.users.id)
        console.log('userV页面获取的数据为'+that.users.name)
        console.log('userV页面获取的数据为'+that.users.age)
      })
    }
  }
</script>

<style scoped>

</style>

以上就是与springboot交互是vue端需要做的事情。

springboot设置:

在Application类(springboot项目启动类)中加入以下代码,解决跨域访问的问题。

 @Configuration
    public class CrosConfig implements WebMvcConfigurer {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowedMethods("GET","HEAD","POST","DELETE","OPTIONS","PUT")
                    .allowCredentials(true)
                    .maxAge(3600)
                    .allowedHeaders("*");
        }
    }


f5fd4febce334ea7a538b421dfc64b5d.png

springboot设置 vue 请求数据的端口和数据返回:

70df2fc2c7e4479b93c21171bead158d.png

 源码:

package com.example.shan3.controller;

import com.example.shan3.model.User;
import com.example.shan3.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

/**

 */
@Controller
@RequestMapping(value = "/user")
public class UserController {

    /**
     * 将UserService注入controller层
     */
    @Autowired
    private UserService userService;

    @RequestMapping(value = "/show")
    public String show(){
        //返回user页面显示内容
        System.out.println("user-");
        return "user";

    }
    @PostMapping(value = "/getUser")
    public String getUser(Integer id, Model model) {
        User user = userService.selectUserById(id);
        model.addAttribute("users",user);
        if(user!=null){
            return "getUser";
        }else {
            return "error";
        }
    }
}

springboot中的端口实现等不详细贴出,在我之前的博客中有。 

4.总结

springboot在controller中定义好路径,并自己实现获取数据的接口类,实现对数据的获取,然后将数据进行返回。

vue 使用axios对springboot定义好的数据访问路径(源,地址)进行请求,并接收springboot返回的数据。

vue项目在开发运行的时候可以打开浏览器的控制台,并使用console语句在控制台进行信息打印输出,这样可以看到vue项目的报错等信息,方便查错等。

设置好这个交互端口,springboot和vue的开发完全可以分离而各自关注不同的重点(数据的处理和界面设计),从而实现前后端开发的分离。

  • 36
    点赞
  • 341
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
【资源说明】 1、基于SpringBoot+Vue开发的前后端分离外卖点单系统源码+数据库+项目说明.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SpringBoot+Vue开发的前后端分离外卖点单系统源码+数据库+项目说明.zip 基于SpringBoot+Vue开发的前后端分离外卖点单系统源码+数据库+项目说明.zip ## 目录结构 后台前端项目位于renren-ui下 小程序前端项目位于takeout_mp下 SQL文件位于根目录下的takeout_mysql8.sql,需要MYSQL8以上版本。 **ps:请先运行后端项目,再启动前端项目。** ``` take_out │ ├─renren-admin 美食元素后台管理后端服务 │ │ │ │ │ ├─modules 模块 │ │ ├─job 定时任务 │ │ ├─log 日志管理 │ │ ├─oss 文件存储 │ │ ├─security 安全模块 │ │ ├─sys 系统管理(核心) | | └─takeout 外卖业务模块(核心) │ │ │ └─resources │ ├─mapper MyBatis文件 │ ├─public 静态资源 │ └─application.yml 全局配置文件 │ │ ├─renren-api 美食元素小程序后端服务 │ ├─renren-common 公共模块 ├─renren-generator 代码生成器 │ └─resources │ ├─mapper MyBatis文件 │ ├─template 代码生成器模板(可增加或修改相应模板) │ ├─application.yml 全局配置文件 │ └─generator.properties 代码生成器,配置文件 │ ├─renren-ui 美食元素后台管理Vue前端项目 ├─takeout_mp uniapp微信小程序项目 ``` ## 项目特点 - 友好的代码结构及注释,便于阅读及二次开发 - 实现前后端分离,通过token进行数据交互 - 支持动态权限修改,采用RBAC模型,前端菜单和后台权限实时更新。 - 提供CrudService接口,对增删改查进行封装,代码更简洁 - 页面交互使用Vue2.x,极大的提高了开发效率 - 完善的部门管理及数据权限,通过注解实现数据权限的控制 - 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击 - 完善的代码生成机制,可在线生成entity、xml、dao、service、vue、sql代码,减少70%以上的开发任务 - 引入quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能 - 引入Hibernate Validator校验框架,轻松实现后端校验 - 引入云存储服务,已支持:七牛云、阿里云、腾讯云等 - 引入swagger文档支持,方便编写API接口文档 - 新增AOP注解实现日志管理。 - 代码遵循阿里巴巴开发规范,利于开发者学习。 ## 技术选型 - 核心框架:Spring Boot 2.7.1 - 安全框架:Apache Shiro 1.9 - 持久层框架:MyBatis 3.5 - 定时器:Quartz 2.3 - 数据库连接池:Druid 1.2 - 日志管理:Logback - 页面交互Vue2.x - 微信小程序:uni-app ## 开发环境 | 开发工具 | 说明 | | ----------------------------- | ------------------ | | IDEA | Java开发工具IDE | | WebStrom或者VS Code | Vue开发工具IDE | | Navicat | MySQL远程连接工具 | | Another Redis Desktop Manager | R

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值