ssm vue架构图_ssm+vue前后端分离框架整合实现(附源码)
前言
本文针对Spring+SpringMVC+Mybatis后台开发框架(基于maven构建)与vue前端框架(基于webpack构建)的项目整合进行介绍,对于ssm和vue单独项目的搭建不作为本文的重点,而着重介绍两者之间交互的要点。
SSM
项目结构
说明
项目有service和web两个子项目组成,web依赖于service,其中web主要是control层内容,service则对应service层,而MyBatis内容放在了service项目中,spring配置文件放在了web项目中。将control层和service层分离成两个子项目,有利于项目的维护。
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修改
测试代码:
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 => {})
}
配置好之后,运行项目发现前端仍然是无法访问后台接口,出现以下报错。可以看出是出现跨域问题了。
解决跨域问题
对于跨域问题,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;
}
}
重启项目,返回正确结果。
源码
后台代码:SSMDemo
前端代码:VueDemo
到此这篇关于ssm+vue前后端分离框架整合实现(附源码)的文章就介绍到这了,更多相关ssm+vue前后端分离内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
ssm vue架构图_ssm+vue前后端分离框架整合实现(附源码)相关推荐
- ssm+vue前后端分离框架整合(附源码)
前言 本文针对Spring+SpringMVC+Mybatis后台开发框架(基于maven构建)与vue前端框架(基于webpack构建)的项目整合进行介绍,对于ssm和vue单独项目的搭建不作为本文 ...
- Spring Boot + Vue + Shiro 实现前后端分离、权限控制 (附源码)
点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] 原项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Free ...
- 基于springboot vue前后端分离的图书借阅管理系统源码
请观看视频: 基于springboot vue前后端分离的图书借阅管理系统源码 <project xmlns="http://maven.apache.org/POM/4.0.0&qu ...
- 基于JAVA前后端分离健身房管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA前后端分离健身房管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA前后端分离健身房管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B ...
- 基于java前后端分离Erp系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
基于java前后端分离Erp系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java前后端分离Erp系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技 ...
- 计算机毕业设计JAVA前后端分离在线作业系统mybatis+源码+调试部署+系统+数据库+lw
计算机毕业设计JAVA前后端分离在线作业系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA前后端分离在线作业系统mybatis+源码+调试部署+系统+数据库+lw 本源码技 ...
- Vue+ElementUI+SpringBoot实现的前后端分离框架
项目介绍 一款 Java 语言基于 SpringBoot2.x.MybatisPlus.Vue.ElementUI.MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化.组件化.可插拔的前后 ...
- 基于Vue+ElementUI的大数据分析前后端分离框架
项目介绍 一款 Java 语言基于 SpringBoot2.x.MybatisPlus.Vue.ElementUI.MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化.组件化.可插拔的前后 ...
- 免费Java(springboot+vue)前后端分离的企业官网源码
码云地址:https://gitee.com/superman_cn/java-springboot-vue 演示地址(开源不容易,请善待公共服务): 前台:http://47.103.26.130: ...
最新文章
- Centos7多内核情况下修改默认启动内核方法
- 应对AI失控,研究人员提出用“人格障碍治疗”解决问题
- 华为2288H V5串口重定向修改为iBMC
- JDK源码解析 Runable是一个典型命令模式,Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法
- 十四、去年写的Numpy使用方法梳理,2020年5月13日整理
- C语言开发笔记(七)const和指针
- java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key c
- 调用http_【学习充电】直观讲解一下 RPC 调用和 HTTP 调用的区别!
- Catalyst 6000 family Architecture
- js实现一键复制到剪切板上_js实现各种复制到剪贴板的方法(分享)
- JDK10你必须了解的新特性
- javaScript开源大全
- 人生,有时需要不知足!
- 项目管理中如何制定项目目标
- printThis前端打印插件
- 通过rustlings源码了解rust如何从命令行参数里面获取值的方式
- win7 visual studio code安装和使用
- 在这个项目的心得体会和经验教训
- shiro设置ip白名单_亚马逊家庭IP:Luminati的搭建的步骤
- AMOLED真的比LCD屏幕更伤眼吗