Vue + Spring Boot 整合全解析

一、引言

在当今的Web开发领域,前后端分离架构已成为主流。Vue.js作为一款流行的前端框架,以其简洁易用和高效的特点深受开发者喜爱;Spring Boot则是Java后端开发中快速构建应用的利器。将Vue和Spring Boot整合,能够充分发挥两者的优势,打造出高性能、易维护的Web应用。本文将详细介绍如何进行Vue + Spring Boot的整合。

二、环境准备

  1. 前端环境:确保已安装Node.js,它是运行Vue项目所必需的。可从Node.js官网下载并安装。安装完成后,通过node -vnpm -v命令检查版本,确保安装成功。
  2. 后端环境:安装JDK(建议JDK 8及以上)和Maven。可从Oracle官网下载JDK,从Maven官网下载Maven。配置好相应的环境变量后,通过java -versionmvn -v命令验证安装。

三、创建Spring Boot后端项目

  1. 使用Spring Initializr快速创建项目
    访问Spring Initializr,在网页上进行项目初始化配置。选择Maven项目,语言为Java,Spring Boot版本可根据需求选择(这里以2.6.4为例)。在“Dependencies”中添加“Spring Web”依赖,它会帮助我们快速搭建起Web服务。点击“Generate”下载项目压缩包,解压后即可在IDE(如IntelliJ IDEA或Eclipse)中打开。
  2. 创建一个简单的Controller
    src/main/java/com/yourpackage/controller目录下创建一个新的类,例如HelloController。代码如下:
package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/api/hello")public String hello() {return "Hello from Spring Boot!";}
}

上述代码定义了一个简单的RESTful接口,当访问/api/hello时,会返回“Hello from Spring Boot!”。

四、创建Vue前端项目

  1. 使用Vue CLI创建项目
    打开命令行工具,运行以下命令创建Vue项目:
vue create vue - spring - boot - integration

按照提示选择预设配置,这里我们选择默认配置即可。创建完成后,进入项目目录:

cd vue - spring - boot - integration
  1. 编写前端页面调用后端接口
    src/views目录下创建一个新的组件,例如Hello.vue。代码如下:
<template><div><h1>{{ message }}</h1></div>
</template><script>
export default {data() {return {message: ''}},mounted() {this.fetchData();},methods: {async fetchData() {try {const response = await fetch('http://localhost:8080/api/hello');const data = await response.text();this.message = data;} catch (error) {console.error('Error fetching data:', error);}}}
}
</script>

上述代码在页面加载时(mounted钩子函数),通过fetch方法调用后端的/api/hello接口,并将返回的数据显示在页面上。

  1. 配置路由
    src/router/index.js中配置路由,引入刚刚创建的Hello.vue组件。代码如下:
import { createRouter, createWebHistory } from 'vue-router'
import Hello from '@/views/Hello.vue'const routes = [{path: '/',name: 'Hello',component: Hello}
]const router = createRouter({history: createWebHistory(process.env.BASE_URL),routes
})export default router

五、解决跨域问题

由于前端运行在一个端口(如http://localhost:8081),后端运行在另一个端口(如http://localhost:8080),会出现跨域问题。在Spring Boot后端项目中解决跨域问题很简单,只需创建一个配置类。在src/main/java/com/yourpackage/config目录下创建CorsConfig.java,代码如下:

package com.example.demo.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class CorsConfig {@Beanpublic WebMvcConfigurer corsConfigurer() {return new WebMvcConfigurer() {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("http://localhost:8081").allowedMethods("GET", "POST", "PUT", "DELETE").allowedHeaders("*");}};}
}

上述代码配置了允许来自http://localhost:8081的跨域请求,支持常见的HTTP方法,并允许所有的请求头。

六、启动项目

  1. 启动Spring Boot后端项目:在IDE中直接运行Spring Boot项目的主类(通常带有@SpringBootApplication注解),或者在项目根目录下通过命令行运行mvn spring-boot:run,启动后控制台会显示项目启动成功的信息,后端服务监听在默认的8080端口。
  2. 启动Vue前端项目:在Vue项目根目录下运行npm run serve,启动后控制台会输出项目的访问地址,一般为http://localhost:8081。在浏览器中访问该地址,即可看到前端页面显示“Hello from Spring Boot!”,这表明Vue和Spring Boot成功整合。

七、总结

通过以上步骤,我们成功地将Vue和Spring Boot进行了整合。这种前后端分离的架构模式不仅提高了开发效率,也使项目的维护和扩展更加容易。在实际项目中,可以根据需求进一步完善前后端的功能,如添加用户认证、数据库操作等。希望本文能帮助你快速上手Vue + Spring Boot的整合开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PDF.js 生态中如何处理“添加注释\添加批注”以及 annotations.contents 属性

我们来详细解释一下在 PDF.js 生态中如何处理“添加注释”以及 annotations.contents 属性。 核心要点&#xff1a;PDF.js 本身主要是阅读器&#xff0c;不是编辑器 首先&#xff0c;最重要的一点是&#xff1a;PDF.js 的核心库 (pdfjs-dist) 主要设计用于解析和渲染&#xf…

当HTTP遇到SQL注入:Java开发者的攻防实战手册

一、从HTTP请求到数据库查询:漏洞如何产生? 危险的参数拼接:Servlet中的经典错误 漏洞代码重现: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String category = request.getParameter("…

【grafana原生告警中心配置飞书机器人告警】

在grafana中的connect point中使用webhook的方式推送到飞书&#xff0c;始终无法触发告警&#xff0c;原因是grafana推送的格式飞书不识别&#xff0c;现有两种方式 1.使用中转服务 使用flask搭建一个服务&#xff0c;grafana告警先通过webhook发送到web服务中&#xff0c;格…

kafka集群认证

1、安装Kerberos(10.10.10.168) yum install krb5-server krb5-workstation krb5-libs -y ​ 查看版本 klist -V ​ Kerberos 5 version 1.20.1 ​ 编辑/etc/hosts 10.10.10.168 ms1 10.10.10.150 ms2 10.10.10.110 ms3 vim /etc/krb5.conf # Configuration snippets ma…

前端工程化之自动化测试

自动化测试 自动化测试为什么需要测试&#xff1f;什么时候需要考虑测试测试类型前端测试框架单元测试Jest 重点掌握项目示例package.jsonsrc/utils/math.tssrc/utils/math.test.ts进行测试jest.config.js覆盖率直观看覆盖率coverage/lcov-report/index.html src/main.test.tst…

分布式系统核心原理

CAP定理与权衡实践 CAP定理 一致性&#xff08;Consistency&#xff09; 强一致性&#xff1a;所有读写操作均基于最新数据&#xff08;如银行转账&#xff09;。 最终一致性&#xff1a;数据副本经过一段时间后达到一致&#xff08;如社交媒体的点赞数&#xff09;。 技术实现…

Step文件无法编辑怎么办?

Step文件无法编辑怎么办&#xff1f; 这里介绍两种方法&#xff0c; 1、 直接导入 准备step文件&#xff0c;solidworks导入后是这样&#xff0c;不能在上面直接编辑 图 1 点击右键&#xff0c;选择解除特征&#xff08;不同版本的可能不太一样&#xff0c;这里是solidworks2…

TIM_ITConfig() 和 TIM_Cmd()

在STM32的定时器中断配置中&#xff0c;TIM_ITConfig() 和 TIM_Cmd() 是两个关键函数&#xff0c;它们分别控制中断使能和定时器计数器的启停&#xff0c;作用层级不同。以下是详细解释&#xff1a; 1. TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE) 作用 启用定时器的特定中断…

TensorFlow 实现 Mixture Density Network (MDN) 的完整说明

本文档详细解释了一段使用 TensorFlow 构建和训练混合密度网络&#xff08;Mixture Density Network, MDN&#xff09;的代码&#xff0c;涵盖数据生成、模型构建、自定义损失函数与预测可视化等各个环节。 1. 导入库与设置超参数 import numpy as np import tensorflow as t…

数据结构实验7.2:二叉树的基本运算

文章目录 一&#xff0c;实验目的二&#xff0c;问题描述三&#xff0c;基本要求四&#xff0c;实验操作五&#xff0c;示例代码六&#xff0c;运行效果 一&#xff0c;实验目的 深入理解树与二叉树的基本概念&#xff0c;包括节点、度、层次、深度等&#xff0c;清晰区分二叉…

直线轴承常规分类知多少?

直线轴承的分类方式多样&#xff0c;以下是从材质、结构形状和常规系列三个维度进行的具体分类&#xff1a; 按主要材质分类 外壳材质&#xff1a;常见的有不锈钢&#xff0c;具有良好的耐腐蚀性&#xff0c;适用于一些对环境要求较高、易受腐蚀的工作场景&#xff1b;轴承…

websocket和SSE学习记录

websocket学习记录 websocket使用场景 即时聊天在线文档协同编辑实施地图位置 从开发角度来学习websocket开发 即使通信项目 通过node建立简单的后端接口,利用fs&#xff0c; path&#xff0c; express app.get(*, (req, res) > {const assetsType req.url.split(/)[…

CUDA编程中影响性能的小细节总结

一、内存访问优化 合并内存访问&#xff1a;确保相邻线程访问连续内存地址&#xff08;全局内存对齐访问&#xff09;。优先使用共享内存&#xff08;Shared Memory&#xff09;减少全局内存访问。避免共享内存的Bank Conflict&#xff08;例如&#xff0c;使用padding或调整访…

【双指针】对撞指针 快慢指针 移动零

文章目录 双指针介绍对撞指针快慢指针283. 移动零解题思路算法思路算法流程双指针介绍 ​ 算法中的双指针,并不一定是指我们平常在 c/c++ 使用的指针类型,更多时候其实是数组的下标等,因为它们也是有标识某个元素的功能,通常我们也就顺其自然地称其为 “指针” ! ​ 常见…

数据结构0基础学习堆

文章目录 简介公式建立堆函数解释 堆排序O(n logn)topk问题 简介 堆是一种重要的数据结构&#xff0c;是一种完全二叉树&#xff0c;&#xff08;二叉树的内容后面会出&#xff09;&#xff0c; 堆分为大小堆&#xff0c;大堆&#xff0c;左右结点都小于根节点&#xff0c;&am…

4.17--4.19刷题记录(贪心)

第一部分&#xff1a;准备工作 代码随想录中解释为&#xff1a;贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 而我的理解为&#xff1a;贪心实质上是具有最优子结构的一种算法。所有的解都能由当前最优的解组成。 第二部分&#xff1a;开始刷题 &…

学习笔记十七——Rust 支持面向对象编程吗?

&#x1f9e0; Rust 支持面向对象编程吗&#xff1f; Rust 是一门多范式语言&#xff0c;主要以 安全、并发、函数式、系统级编程为核心目标&#xff0c;但它同时也支持面向对象的一些关键特性&#xff0c;比如&#xff1a; 特性传统 OOP&#xff08;如 Java/C&#xff09;Ru…

【Linux】43.网络基础(2.5)

文章目录 2.4 TCP/UDP对比2.4.1 用UDP实现可靠传输(经典面试题) 2.5 TCP 相关实验2.5.1 理解 listen 的第二个参数 2.4 TCP/UDP对比 我们说了TCP是可靠连接, 那么是不是TCP一定就优于UDP呢? TCP和UDP之间的优点和缺点, 不能简单, 绝对的进行比较TCP用于可靠传输的情况, 应用于…

three.js与webgl在buffer上的对应关系

一、three.js的类名 最近开始接触three.js 看到three.js中的一些类名和webgl的很相似 不自觉的就想对比一下 二、three.js中绘制4个点 // 创建点的几何体 const vertices new Float32Array([0.0, 0.0, 0.0, // 点11.0, 0.0, 0.0, // 点20.0, 1.0, 0.0, // 点30.…

DataWhale AI春训营 问题汇总

1.没用下载训练集导致出错&#xff0c;爆错如下。 这个时候需要去比赛官网下载对应的初赛训练集 unzip -d /mnt/workspace/sais_third_new_energy_baseline/data /mnt/workspace/sais_third_new_energy_baseline/初赛训练集.zip 在命令行执行这个命令解压 2.没定义测试集 te…