ToB企服应用市场:ToB评测及商务社交产业平台

标题: 二非常钟秒懂:实现前后端分脱离发(vue+element+spring boot+mybatis+MySQ [打印本页]

作者: 莫张周刘王    时间: 2024-6-15 01:10
标题: 二非常钟秒懂:实现前后端分脱离发(vue+element+spring boot+mybatis+MySQ
目录
开发者介绍
什么是前后端分脱离发
vue与springboot开发的优势
Vue.js 的优势:
Spring Boot 的优势:
vue与springboot如何实现前后端连接
demo简介
紧张部门前端部门代码
紧张部门后端代码
后端办理跨域问题
Controller部门
xml部门
service部门
demo示例演示


开发者介绍

   后端开发者:小昕ᵇᵃᵇʸ.的博客_CSDN博客-范畴博主小昕ᵇᵃᵇʸ.关注python,css,java,c语言,html5,数据结构范畴.
https://blog.csdn.net/m0_68936458?type=blog前端开发者:
  lqj_本人的博客_CSDN博客-python人工智能视觉(opencv)从入门到实战,微信小程序,前端范畴博主lqj_本人善于python人工智能视觉(opencv)从入门到实战,微信小程序,前端,等方面的知识
https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343
  什么是前后端分脱离发

   前后端分脱离发是一种软件开发模式,将前端和后端的开发分脱离来,使得前端和后端可以独立开发、测试和部署。在前后端分脱离发中,前端负责展示数据和用户交互,后端负责处理业务逻辑和数据存储。 具体来说,前端开发职员使用 HTML、CSS、JavaScript 等技能实现用户界面和交互逻辑,通过 AJAX 或 WebSocket 等技能与后端进行通信,获取数据并将数据展示给用户。后端开发职员则负责编写业务逻辑和数据存储的代码,提供 API 接供词前端调用。 前后端分脱离发的长处包括:
    vue与springboot开发的优势

   Vue.js 和 Spring Boot 是两个非常流行的开发框架,它们分别用于前端和后端开发。它们的优势如下:
  Vue.js 的优势:

    
  Spring Boot 的优势:

    综上所述,Vue.js 和 Spring Boot 都有各自的优势,它们可以很好地共同使用,实现高效的全栈开发。Vue.js 负责前端 UI 的实现和交互逻辑,Spring Boot 负责后端业务逻辑的实现和数据处理。
  vue与springboot如何实现前后端连接

   Vue和Spring Boot可以通过RESTful API实现前后端连接。
          首先,在Spring Boot中创建一个RESTful API,可以使用Spring Boot提供的@RestController注解来实现。在这个API中,你可以定义HTTP请求的处理逻辑,比如从数据库中获取数据并返回给前端。
          然后,在Vue中,你可以使用Vue提供的axios库来发送HTTP请求,获取后端数据。你可以在Vue组件中使用axios发送请求,然后将返回的数据渲染到页面上。
  具体实现步骤如下:
    简单的示例:
  在Spring Boot中创建一个RESTful API:
  1. @RestController
  2. @RequestMapping("/api")
  3. public class ApiController {
  4.     @Autowired
  5.     private UserService userService;
  6.     @GetMapping("/users")
  7.     public List<User> getUsers() {
  8.         return userService.getUsers();
  9.     }
  10. }
复制代码
在Vue中使用axios发送HTTP请求:
  1. import axios from 'axios'
  2. export default {
  3.   data() {
  4.     return {
  5.       users: []
  6.     }
  7.   },
  8.   mounted() {
  9.     axios.get('/api/users')
  10.       .then(response => {
  11.         this.users = response.data
  12.       })
  13.       .catch(error => {
  14.         console.log(error)
  15.       })
  16.   }
  17. }
复制代码
在Vue组件中将返回的数据渲染到页面上:
  1. <template>  <div>    <ul>      <li v-for="user in users" :key="user.id">{{ user.name }}</li>    </ul>  </div></template><script>import axios from 'axios'
  2. export default {
  3.   data() {
  4.     return {
  5.       users: []
  6.     }
  7.   },
  8.   mounted() {
  9.     axios.get('/api/users')
  10.       .then(response => {
  11.         this.users = response.data
  12.       })
  13.       .catch(error => {
  14.         console.log(error)
  15.       })
  16.   }
  17. }</script>
复制代码

  demo简介

注:小demo只是做了简单的演示示例,功能齐全但样式简单,望大家谅解!
此小demo实用于刚接触前端后分脱离发的小同伴,尤其针对前端vue+后端spring boot分脱离发的小同伴。
本项目紧张完成了通过前端的vue.js与后端的spring boot的连接,实现了简单的实现了通过前端页面来调用后端API接口,从而完成对数据库中内容的增删改查。
紧张部门前端部门代码

  1. <template>
  2.   <div class="big_box">
  3.     <!-- 添加数据 -->
  4.     <div style="display:flex;">
  5.       <el-input v-model="newData.product_date" placeholder="请输入日期"></el-input>
  6.       <el-input v-model="newData.brand" placeholder="请输入品牌"></el-input>
  7.       <el-input v-model="newData.commodity_name" placeholder="请输入产品"></el-input>
  8.       <el-input v-model="newData.act" placeholder="请输入产品描述"></el-input>
  9.       <el-input v-model="newData.commodity_id" placeholder="请输入产品编号"></el-input>
  10.       <el-input v-model="newData.price" placeholder="请输入价格"></el-input>
  11.       <el-input v-model="newData.amount" placeholder="请输入库存量"></el-input>
  12.       <el-button @click="add" type="success" size="small">添加</el-button>
  13.     </div>
  14.     <!-- 数据展示 -->
  15.       <el-table
  16.       :data="tableData"
  17.       border
  18.       style="width: 100%">
  19.       <el-table-column
  20.         fixed
  21.         prop="product_date"
  22.         label="日期"
  23.         width="150">
  24.       </el-table-column>
  25.       <el-table-column
  26.         prop="brand"
  27.         label="品牌"
  28.         width="120">
  29.       </el-table-column>
  30.       <el-table-column
  31.         prop="commodity_name"
  32.         label="产品"
  33.         width="120">
  34.       </el-table-column>
  35.       <el-table-column
  36.         prop="act"
  37.         label="产品描述"
  38.         width="300">
  39.       </el-table-column>
  40.       <el-table-column
  41.         prop="commodity_id"
  42.         label="产品编号"
  43.         width="120">
  44.       </el-table-column>
  45.       <el-table-column
  46.         prop="price"
  47.         label="价格"
  48.         width="120">
  49.       </el-table-column>
  50.       <el-table-column
  51.         prop="amount"
  52.         label="库存量"
  53.         width="120">
  54.       </el-table-column>
  55.       <el-table-column
  56.         fixed="right"
  57.         label="操作">
  58.         <template slot-scope="scope">
  59.           <el-button @click="handleClick(scope.row)" type="warning" size="small">修改</el-button>
  60.           <el-button @click="del_data(scope.row.commodity_id)" type="danger" size="small">删除</el-button>
  61.         </template>
  62.       </el-table-column>
  63.     </el-table>
  64.     <!-- 修改数据 -->
  65.     <div v-if="this.update">
  66.       <div style="display:flex;">
  67.       <el-input v-model="upData.product_date" placeholder="请输入日期"></el-input>
  68.       <el-input v-model="upData.brand" placeholder="请输入品牌"></el-input>
  69.       <el-input v-model="upData.commodity_name" placeholder="请输入产品"></el-input>
  70.       <el-input v-model="upData.act" placeholder="请输入产品描述"></el-input>
  71.       <el-input v-model="upData.commodity_id" placeholder="请输入产品编号"></el-input>
  72.       <el-input v-model="upData.price" placeholder="请输入价格"></el-input>
  73.       <el-input v-model="upData.amount" placeholder="请输入库存量"></el-input>
  74.       <el-button @click="edit_put" type="success" size="small">修改</el-button>
  75.     </div>
  76.     </div>
  77.   </div>
  78.   
  79. </template>
  80. <script>
  81. import axios from 'axios'
  82.   export default{
  83.     mounted(){
  84.       // 显示数据
  85.       axios.get('http://localhost:8090/car/query').then(res=>{
  86.         console.log(res.data.data);
  87.         this.tableData = res.data.data
  88.       })
  89.     },
  90.     methods: {
  91.       handleClick(row) {
  92.         this.update = true
  93.         this.row_data = row
  94.         console.log(this.row_data);
  95.         this.id = row.commodity_id
  96.       },
  97.       // 条件修改
  98.       edit_put(){
  99.         axios.post('http://localhost:8090/car/update',{
  100.           commodity_id:this.upData.commodity_id
  101.         }).then(res=>{
  102.           console.log(res.data)
  103.           this.update = false
  104.         })
  105.       },
  106.       // 添加数据
  107.       add(){
  108.         axios.post('http://localhost:8090/car/add',this.newData).then(res=>{
  109.           console.log(res.data)
  110.         })
  111.       },
  112.       // 删除数据
  113.       del_data(commodity_id){
  114.         console.log(commodity_id);
  115.         axios.get('http://localhost:8090/car/del?commodity_id='+commodity_id).then(res=>{
  116.           console.log(res.data)
  117.         })
  118.       }
  119.     },
  120.     data() {
  121.       return {
  122.         update:false,
  123.         id:'',
  124.         row_data:'',
  125.         // 添加数据data
  126.         newData:{
  127.           brand:'',
  128.           commodity_id:'',
  129.           commodity_name:'',
  130.           product_date:'',
  131.           act:'',
  132.           amount:null,
  133.           price:null
  134.         },
  135.         // 修改数据data
  136.         upData:{
  137.           brand:'',
  138.           commodity_id:'',
  139.           commodity_name:'',
  140.           product_date:'',
  141.           act:'',
  142.           amount:null,
  143.           price:null
  144.         },
  145.         tableData: []
  146.       }
  147.     }
  148.   }
  149. </script>
  150. <style scoped>
  151. .big_box{
  152.   width: 1200px;
  153. }
  154. </style>
复制代码
紧张部门后端代码

后端办理跨域问题

  1. @CrossOrigin(origins = "*")
复制代码
Controller部门

  1. package com.wfit.boot.controller;
  2. import com.wfit.boot.commons.Result;
  3. import com.wfit.boot.model.Car;
  4. import com.wfit.boot.service.CarService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.*;
  7. import java.util.List;
  8. @RestController
  9. @RequestMapping("/car")
  10. public class CarController {
  11.     @Autowired
  12.     private CarService carService;
  13.     /**
  14.      * 新增汽车用品信息
  15.      * @param car
  16.      * @return
  17.      */
  18.     @PostMapping("/add")
  19.     @CrossOrigin(origins = "*")
  20.     public Result addCar(@RequestBody Car car){
  21.         carService.saveCar(car);
  22.         return Result.success("新增汽车用品信息成功:" + car);
  23.     }
  24.     /**
  25.      * 修改
  26.      * @param car
  27.      * @return
  28.    */
  29.    @PostMapping ("/update")
  30.    @CrossOrigin(origins = "*")
  31.     public Result updateCar(@RequestBody Car car){
  32.         carService.updateCar(car);
  33.         return Result.success("修改汽车用品信息成功:" + car);
  34.     }
  35.     /**
  36.      * 删除
  37.      * @param commodity_id
  38.      * @return
  39.      */
  40.     @GetMapping("/del")
  41.     @CrossOrigin(origins = "*")
  42.     public Result delCar(String commodity_id){
  43.         carService.delCar(commodity_id);
  44.         return Result.success("删除编号为" + commodity_id + "汽车用品信息成功!");
  45.     }
  46.     /**
  47.      * 查询
  48.      * @return
  49.      */
  50.     @GetMapping("/query")
  51.     @CrossOrigin(origins = "*")
  52.     public Result queryCar(){
  53.         List<Car> carList = carService.queryCar();
  54.         return Result.success(carList);
  55.     }
  56. }
复制代码
xml部门

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.wfit.boot.mapper.CarMapper">
  4. <!--保存汽车用品信息-->
  5.     <insert id="saveCar" parameterType="com.wfit.boot.model.Car">
  6.         insert into car values (
  7.             #{brand},
  8.             #{commodity_id},
  9.             #{commodity_name},
  10.             #{act},
  11.             #{product_date},
  12.             #{amount},
  13.             #{price}
  14.         )
  15.     </insert>
  16. <!--    修改汽车用品信息-->
  17.     <update id="updateCar" parameterType="com.wfit.boot.model.Car">
  18.         update car
  19.         set price = #{price}
  20.         where commodity_id =#{commodity_id}
  21.     </update>
  22. <!--    删除汽车用品信息-->
  23.     <delete id="delCar" parameterType="java.lang.String">
  24.         delete from car where commodity_id = #{commodity_id};
  25.     </delete>
  26. <!--    查询汽车用品信息-->
  27.     <select id="queryCar" resultType="com.wfit.boot.model.Car">
  28.         select *
  29.         from car
  30.     </select>
  31. </mapper>
复制代码
service部门

  1. package com.wfit.boot.service.impl;
  2. import com.wfit.boot.mapper.CarMapper;
  3. import com.wfit.boot.model.Car;
  4. import com.wfit.boot.service.CarService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import java.util.List;
  8. @Service
  9. public class CarServiceImpl implements CarService {
  10.     @Autowired
  11.     private CarMapper carMapper;
  12.     @Override
  13.     public void saveCar(Car car) {
  14.         carMapper.saveCar(car);
  15.     }
  16.     @Override
  17.     public void updateCar(Car car) {
  18.         carMapper.updateCar(car);
  19.     }
  20.     @Override
  21.     public void delCar(String commodity_id) {
  22.         carMapper.delCar(commodity_id);
  23.     }
  24.     @Override
  25.     public List<Car> queryCar() {
  26.         return carMapper.queryCar();
  27.     }
  28. }
复制代码
demo示例演示


 

 

 

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4