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 相关文章推荐
JS自调用匿名函数具体实现
Feb 11 Javascript
JS继承之借用构造函数继承和组合继承
Sep 07 Javascript
原生js的RSA和AES加密解密算法
Oct 08 Javascript
Vue.js仿Metronic高级表格(一)静态设计
Apr 17 Javascript
javascript 通过键名获取键盘的keyCode方法
Dec 31 Javascript
node内置调试方法总结
Feb 22 Javascript
JavaScript封闭函数及常用内置对象示例
May 13 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
Jul 18 Javascript
vue+eslint+vscode配置教程
Aug 09 Javascript
js实现图片无缝循环轮播
Oct 28 Javascript
基于Electron实现桌面应用开发代码实例
Jul 07 Javascript
JavaScript Array.flat()函数用法解析
Sep 02 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开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
python中使用print输出中文的方法
2018/07/16 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python对excel的基本操作方法
2021/02/18 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
校庆标语集锦
2014/06/25 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
2014企业年终工作总结
2014/12/23 职场文书
开学第一天的感想
2015/08/10 职场文书
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫