ssm+vue前后端分离框架整合实现(附源码)


Posted in Javascript onJuly 08, 2020

前言

本文针对Spring+SpringMVC+Mybatis后台开发框架(基于maven构建)与vue前端框架(基于webpack构建)的项目整合进行介绍,对于ssm和vue单独项目的搭建不作为本文的重点,而着重介绍两者之间交互的要点。

SSM

项目结构

ssm+vue前后端分离框架整合实现(附源码)

说明
项目有service和web两个子项目组成,web依赖于service,其中web主要是control层内容,service则对应service层,而MyBatis内容放在了service项目中,spring配置文件放在了web项目中。将control层和service层分离成两个子项目,有利于项目的维护。

Vue

ssm+vue前后端分离框架整合实现(附源码)

2.可以看出,这个是标准的使用webpack搭建的vue项目

前后端交互(重点)

重点来了,前后端交互无非是前端能够访问后端接口,并且成功接收到后端返回数据。在配置过程中,需要注意两个点,一是配置后端接口地址,二是跨域问题。

配置后端接口地址

在vue中,使用的是axios发送ajax请求和后台交互,我们需要main.js中配置axios默认访问地址。

在src/main.js文件中增加

// 引用axios,并设置基础URL为后端服务api地址
var axios = require('axios')
axios.defaults.baseURL = "http://127.0.0.1:8080/blog/api"
//设置全局,每次ajax请求携带cookies
// axios.defaults.withCredentials = true
// 将API方法绑定到全局
Vue.prototype.$axios = axios

我们配置http://127.0.0.1:8080/blog/api为所有axios的默认请求地址,其中后台端口号为8080,而vue项目默认的端口号也为8080,所有需要修改vue项目中的默认访问端口号,改为8090(不与后台端口冲突即可)。

在config/index.js修改

ssm+vue前后端分离框架整合实现(附源码)

测试代码:

created:function(){
  var data = Qs.stringify({});
  this.$axios
  .post('/check', data)
  .then(successResponse => {
   this.responseResult = JSON.stringify(successResponse.data)
   if (successResponse.data.code === 200) {
    this.$notify({
     title: '成功',
     message: successResponse.data.message,
     type: 'success'
    });
   }else{
    this.$notify({
     title:"失败",
     message:successResponse.data.message,
     type:'error'
    })
   }
  })
  .catch(failResponse => {})
 }

配置好之后,运行项目发现前端仍然是无法访问后台接口,出现以下报错。可以看出是出现跨域问题了。

ssm+vue前后端分离框架整合实现(附源码)

解决跨域问题

对于跨域问题,SpringMVC提供了注解@CrossOrigin处理该问题(想知道@CrossOrigin做了什么,请移步Spring @CrossOrigin 注解原理),只需要在对应的接口中增加@CrossOrigin即可(也可通过全局配置的方式设置,这里不做介绍)。

MainController.java:

package com.blog.web.controller;


import com.blog.common.Result;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
@RequestMapping("/blog/api")
public class MainController {

  private Logger logger = Logger.getLogger ( MainController.class );
  @RequestMapping ( value = "/check", method = RequestMethod.POST )
  @ResponseBody
  @CrossOrigin
  public Result check () {
    logger.info("MainController run");
    Result result = new Result();
    result.setMessage("SSM vue前后端框架搭建成功");
    return result;
  }

}

重启项目,返回正确结果。

ssm+vue前后端分离框架整合实现(附源码)

源码

后台代码:SSMDemo
前端代码:VueDemo

到此这篇关于ssm+vue前后端分离框架整合实现(附源码)的文章就介绍到这了,更多相关ssm+vue前后端分离内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
Jul 26 Javascript
js导入导出excel(实例代码)
Nov 25 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
Jan 13 Javascript
Javascript window对象详解
Nov 12 Javascript
关于Javascript加载执行优化的研究报告
Dec 16 Javascript
javascript异步编程代码书写规范Promise学习笔记
Feb 11 Javascript
移动Web中图片自适应的两种JavaScript解决方法
Jun 18 Javascript
浅析BootStrap模态框的使用(经典)
Apr 29 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
JS制作适用于手机和电脑的通知信息效果
Oct 28 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 Javascript
Vue作用域插槽实现方法及作用详解
Jul 08 #Javascript
Vue Render函数创建DOM节点代码实例
Jul 08 #Javascript
实例讲解React 组件生命周期
Jul 08 #Javascript
详细分析React 表单与事件
Jul 08 #Javascript
详解JavaScript之ES5的继承
Jul 08 #Javascript
jQuery使用jsonp实现百度搜索的示例代码
Jul 08 #jQuery
微信小程序拖拽排序列表的示例代码
Jul 08 #Javascript
You might like
PHP生成数组再传给js的方法
2014/08/07 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
javascript 数组的方法集合
2008/06/05 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
python创建进程fork用法
2015/06/04 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
好家长事迹材料
2014/01/23 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
抗洪抢险事迹材料
2014/05/06 职场文书
幼儿学前班评语
2014/12/29 职场文书
辞职信格式模板
2015/02/27 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL