vue+springboot项目开发,使用MySQL示例数据库sakila

vue+spring boot项目开发,使用MySQL示例数据库sakila

从零开始开发一个简单的前后端分离项目,实现对MySQL示例数据库sakila中film表的数据展示。

环境配置

使用IDEA进行后端开发(Spring Boot)
  1. 安装IDEA:参考
  2. JDK的安装及配置:参考
  3. 创建Spring Boot项目:
    • 打开IDEA,选择“Create New Project”
    • 选择“Spring Initializr”,填写项目的基本信息
    • 选择JDK11及以上的版本
    • 选择2.6.x及以上版本的Spring Boot
    • 添加项目依赖: Spring Web, Spring Data JPA, MySQL Driver
    • 完成项目创建向导
使用VS Code进行前端开发(Vue.js)
  1. **安装Visual Studio Code (VS Code):**参考
  2. **安装Node.js和npm:**参考
  3. 创建 Vue.js 项目:
    • 打开终端或命令行
    • 全局安装Vue Cli: npm install -g @vue/cli
    • 创建vue.js项目: vue create sakila-frontend
    • 使用模板创建或自定义 (choose defaults or manually select features as needed)

项目开发

Spring Boot 后端开发
  1. 配置MySQL连接:

    路径 src/main/resources/application.properties:

    spring.datasource.url=jdbc:mysql://localhost:3306/sakila?useSSL=false&serverTimezone=UTC
    spring.datasource.username=用户名
    spring.datasource.password=用户密码
    spring.jpa.hibernate.ddl-auto=update
    
  2. 定义JPA Entity:

    路径src/main/java/com/example/sakila/model/Movie.java:

    package com.example.sakila.model;import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;@Entity
    @Table(name = "film")
    public class Movie {@Idprivate Long filmId;private String title;private String description;// Standard getters and setters
    }
    
  3. 创建Repository 接口:

    路径src/main/java/com/example/sakila/repository/MovieRepository.java:

    package com.example.sakila.repository;import com.example.sakila.model.Movie;
    import org.springframework.data.jpa.repository.JpaRepository;public interface MovieRepository extends JpaRepository<Movie, Long> {
    }
    
  4. 实现Controller:

    路径 src/main/java/com/example/sakila/controller/MovieController.java:

    package com.example.sakila.controller;import com.example.sakila.model.Movie;
    import com.example.sakila.repository.MovieRepository;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import java.util.List;@RestController
    @RequestMapping("/api/movies")
    public class MovieController {private final MovieRepository movieRepository;public MovieController(MovieRepository movieRepository) {this.movieRepository = movieRepository;}@GetMappingpublic List<Movie> getAllMovies() {return movieRepository.findAll();}
    }
    
Vue.js前端开发
  1. **安装Axios包:**在项目根目录打开命令行运行 npm install axios.

  2. 创建MovieService

    路径 src/services/MovieService.js:

    import axios from 'axios';const API_URL = 'http://localhost:8080/api/movies';export const getMovies = () => {return axios.get(API_URL);
    };
    
  3. 更新App.vue

    路径 src/App.vue:

    <template><div id="app"><div v-for="movie in movies" :key="movie.filmId"><h3>{{ movie.title }}</h3><p>{{ movie.description }}</p></div></div>
    </template><script>import { getMovies } from './services/MovieService';  export default {name: 'App',data() {return {movies: [],};},created() {getMovies().then(response => {this.movies = response.data;});},};
    </script>
运行项目
  • **后端:**使用IDEA运行application,项目会在 http://localhost:8080上运行
  • **前端:**使用终端导航到项目根目录运行npm run serve,项目会在 http://localhost:8081上运行

解决跨域问题

通常涉及在Spring Boot后端添加CORS(跨源资源共享)配置。这允许前端应用(比如运行在不同端口或域名上的Vue.js应用)安全地请求后端资源。下面是具体步骤:

方法1:使用@CrossOrigin注解

在控制器(Controller)或者具体的请求处理方法上使用@CrossOrigin注解来允许跨域请求。这是最快捷的方式,适用于只需要为某几个控制器或方法解决跨域问题的情况。

  • 在控制器上添加@CrossOrigin

    import org.springframework.web.bind.annotation.CrossOrigin;
    import org.springframework.web.bind.annotation.RestController;@CrossOrigin(origins = "http://localhost:8081") // 允许来自8081端口的跨域请求
    @RestController
    public class MovieController {// ...
    }
    
  • 在方法上添加@CrossOrigin

    import org.springframework.web.bind.annotation.CrossOrigin;
    import org.springframework.web.bind.annotation.GetMapping;public class MovieController {@CrossOrigin(origins = "http://localhost:8081")@GetMapping("/movies")public List<Movie> getMovies() {// ...}
    }
    

方法2:全局CORS配置

如果想为所有控制器和路由统一配置CORS,可以通过实现WebMvcConfigurer接口并覆写addCorsMappings方法来实现。

  1. 创建配置类

    在Spring Boot应用中创建一个新的配置类,比如命名为WebConfig,并使其实现WebMvcConfigurer接口。

    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 WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("http://localhost:8081") // 允许来自8081端口的跨域请求.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的请求方法.allowedHeaders("*") // 允许的请求头.allowCredentials(true); // 允许发送Cookie}
    }
    

这个配置类中的addCorsMappings方法会添加针对所有路由(/**)的CORS配置,允许来自指定源(例如http://localhost:8081)的请求,并允许所有方法和头部,还可以配置是否允许凭证(如Cookies)。

注意:

  • 在开发环境中,本案例将前端Vue.js应用运行在localhost:8081上,而Spring Boot后端应用运行在localhost:8080上,这种情况下需要配置CORS来允许跨域请求。
  • 在生产环境中,建议将allowedOrigins设置为前端应用的实际部署域名,而不是使用*,以增强安全性。

通过以上两种方法之一配置CORS后,Spring Boot后端应该能够接受来自Vue.js前端应用的跨域请求了。

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

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

相关文章

20240131在ubuntu20.04.6下使用whisper不同模式的比对

20240131在ubuntu20.04.6下使用whisper不同模式的比对 2024/1/31 16:07 首先你要有一张NVIDIA的显卡&#xff0c;比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡&#xff01;】 2、请正确安装好NVIDIA最新的驱动程序和CUDA。可选安装&#xff01; 3、配置whisper…

开发实践9_OnlinePlatform笔记

学习朔宁夫开发工程师课程笔记。 0架构&#xff1a; 01. MyDoc\PycharmProjects\ProjOnline&#xff0c;注册一个index app备主页用。 02. python manage.py startapp users, python manage.py startapp course. install apps. 03. total url urlpatterns [# http://127.…

Springboot项目启动后浏览器不能直接访问接口,而postman可以访问?

在云服务器上部署springboot后端时&#xff0c;项目启动后浏览器不能直接访问接口,而postman可以访问。这是当时困扰了我大半天的小问题&#xff0c;在我打开防火墙和阿里云安全组之后还是没解决。然后在网上搜了很多很多资料&#xff0c;以为是浏览器访问权限或者是https什么证…

[力扣 Hot100]Day23 反转链表

题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 出处 思路 经典考研题&#xff0c;用头插法解决。 代码 class Solution { public:ListNode* reverseList(ListNode* head) {if(!head || !head->next) return head;List…

蓝桥 第三周 分治 排序

3.1 分治法介绍及关键点解析_哔哩哔哩_bilibili 分治&#xff1a;分解 解决 合并 快速排序 单向扫描分区法 public static void main(String[] args) {// TODO Auto-generated method stubint[] arr {1,6,3,6,2,8,6,1,0,7};quickSort1(arr,0,arr.length-1);for(int i:arr) {…

shell脚本初始化mysql密码

如果你想在shell脚本中初始化MySQL的密码&#xff0c;你可以使用以下的方法。首先&#xff0c;你需要知道MySQL的root用户密码。在初始化过程中&#xff0c;你可以设置一个新的密码。 以下是一个简单的例子&#xff0c;说明如何在shell脚本中初始化MySQL的root密码&#xff1a…

Open3d计算点云法向量,可视化(代码)

Open3d使用estimate_normals函数来计算法向量。其参数设置Open3d提供了3中参数搜索的方法&#xff08;所有计算的法向量模长为1&#xff09;&#xff1a; open3d.geometry.KDTreeSearchParamKNN(knn20) # 计算近邻的20个点 open3d.geometry.KDTreeSearc…

Linux下qemu的安装并搭建虚拟arm环境(带helloworld测试)【超详细】

qemu的安装并搭建虚拟arm环境 1、准备工作1.1 安装交叉汇编工具1.2 编译内核kernel1.3 u-boot编译1.4 制作根文件系统-busybox 2、启动qemu&#xff08;arm&#xff09;3、helloworld测试 1、准备工作 1.1 安装交叉汇编工具 交叉编译器的作用就不需要详细解释了&#xff0c;因…

MySQL原理(四)索引(3)索引失效与索引区分度

一、索引失效&#xff1a; 首先未使用索引列作为查询条件索引是肯定会生效的&#xff0c;还有其他的情况&#xff0c;索引列做为了查询条件也失效了&#xff1a; ALTER TABLE staffs ADD INDEX idx_staffs_nameAgePos(NAME, age, pos); 1、select 语句、order by语句&#xf…

来了来了,5000个红包封面免费领

今年公众号很慷慨&#xff0c;给长期运营的作者免费发放了6w个红包封面&#xff0c;感谢公众号平台。 往年还是自己花钱找别人设计&#xff0c;平台审核通过后才能正常发放给大家&#xff0c;自从AI绘画工具问世后&#xff0c;自己也能设计了。 下面的两个封面都是我用AI工具St…

2024.1.30报错记录

今天想调通一套github上的U-net代码&#xff0c;把报错记录一下 第一章 ModuleNotFoundError: No module named skimage 没有这个模块 pip install scikit-image 第二章 TypeError: (‘Keyword argument not understood:‘, ‘input‘) TypeError: (‘Keyword argument …

从 20 多套 MySQL 到 1 套 TiDB丨骏伯网络综合运营管理平台应用实践

原文来源&#xff1a; https://tidb.net/blog/a38c72a4 本文作者&#xff1a;骏伯网络 唐帆&#xff0c;PingCAP 贺美存 骏伯网络简介 广州骏伯网络是一家以数据驱动的科技公司&#xff0c;聚焦移动互联网营销服务&#xff0c;坚持以客户为中心&#xff0c;深耕 APP、运营…

政安晨:示例演绎Python的列表

列表和你可以用它们做的事&#xff1a;包括索引、切片和对象变动 (变异-Mutation) 。 列表 在Python中&#xff0c;列表表示有序的值序列。以下是如何创建列表的示例&#xff1a; primes [2, 3, 5, 7] 我们可以将其他类型的元素放在列表中&#xff1a; planets [Mercury…

【C++】拷贝构造函数和赋值运算符重载详解

目录 拷贝构造函数 概念 特征 赋值运算符重载 运算符重载 赋值运算符重载 ​编辑前置和后置重载 ⭐拷贝构造函数 ⭐概念 拷贝构造函数&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c;在用已存 在的类类型对象创建新…

【Java程序设计】【C00248】基于Springboot的摄影跟拍预定管理系统(有论文)

基于Springboot的摄影跟拍预定管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的摄影跟拍预定管理系统 本系统分为系统功能模块、管理员功能模块、摄影师功能模块以及用户功能模块。 系统功能模块&#xf…

回归预测 | Matlab实现CPO-CNN-LSTM-Attention冠豪猪优化卷积长短期记忆神经网络注意力机制多变量回归预测(SE注意力机制)

回归预测 | Matlab实现CPO-CNN-LSTM-Attention冠豪猪优化卷积长短期记忆神经网络注意力机制多变量回归预测&#xff08;SE注意力机制&#xff09; 目录 回归预测 | Matlab实现CPO-CNN-LSTM-Attention冠豪猪优化卷积长短期记忆神经网络注意力机制多变量回归预测&#xff08;SE注…

【考研408】操作系统笔记

文章目录 [toc] 计算机系统概述操作系统的基本概念操作系统的概念和特征操作系统的目标和功能&#xff08;**处理器管理、存储器管理、设备管理、文件管理、向用户提供接口、扩充机器**&#xff09; 操作系统的发展与分类操作系统的运行环境操作系统的运行机制 操作系统的体系结…

Python(SQLite)executescript用法

SQLite 数据库模块的游标对象还包含了一个 executescript() 方法&#xff0c;这不是一个标准的 API 方法&#xff0c;这意味着在其他数据库 API 模块中可能没有这个方法。但是这个方法却很实用&#xff0c;它可以执行一段 SQL 脚本。 例如&#xff0c;如下程序使用 executescr…

CVEMap:用于查询、浏览和搜索 CVE 的开源工具

CVEMap 是一个开源命令行界面 (CLI) 工具&#xff0c;可让您探索常见漏洞和暴露 (CVE)。它旨在提供一个简化且用户友好的界面来导航漏洞数据库。 尽管 CVE 对于查明和讨论安全漏洞至关重要&#xff0c;但它们的快速增长和偶尔夸大的严重性往往会导致误导性信息。 安全专家必须…

13:Session机制实现用户登录与注销功能-Java Web

在Java Web开发中&#xff0c;Session作为服务器端的会话管理技术&#xff0c;对于处理用户登录、状态维护及注销等场景具有至关重要的作用。本文将从理论和实践两方面出发&#xff0c;详细剖析如何使用Session机制实现用户登录与注销功能&#xff0c;并提供前后端代码示例&…