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 相关文章推荐
javascript网页关键字高亮代码
Jul 30 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
Sep 29 Javascript
javascript打印html内容功能的方法示例
Nov 28 Javascript
javascript内置对象操作详解
Feb 04 Javascript
jQuery实现查找链接文字替换属性的方法
Jun 27 Javascript
Ajax 加载数据 练习代码
Jan 05 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
Jan 20 Javascript
JS自定义滚动条效果简单实现代码
Oct 27 Javascript
node.js express中app.param的用法详解
Jul 16 Javascript
React 实现拖拽功能的示例代码
Jan 06 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
Jan 20 Javascript
微信小程序scroll-view点击项自动居中效果的实现
Mar 25 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以ROOT权限执行系统命令的方法
2011/02/10 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
sails框架的学习指南
2014/12/22 Javascript
jQuery后代选择器用法实例
2014/12/23 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
python根据出生年份简单计算生肖的方法
2015/03/27 Python
用C++封装MySQL的API的教程
2015/05/06 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
详解Python time库的使用
2019/10/10 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
园林毕业生自我鉴定范文
2013/12/29 职场文书
12月小学生校园广播稿
2014/02/04 职场文书
专家推荐信模板
2014/05/09 职场文书
与美同行演讲稿
2014/09/13 职场文书
校长四风对照检查材料
2014/09/27 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
HTML常用标签超详细整理
2022/03/19 HTML / CSS