基于Springboot实现汽车4S店销售管理系统

简介: 基于Springboot实现汽车4S店销售管理系统

项目编号:BS-XX-126

一,项目简介

   本项目基于Springboot框架开发实现,主要针对汽车4S店的销售信息进行管理,名为4S管家,主要包含管理员用户和员工用户,主要实现的功能有汽车销售信息管理、配件销售订单管理、售后服务订单管理、库存管理、客户管理、员工管理、系统用户管理、日志管理、系统说明等。特色功能包含图形报表统计功能,数据导入导出功能等。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis

前端开发技术:Bootstrap+Jquery+Ajax

三,系统展示

系统登陆

仪表盘

汽车订单管理

配件订单管理

售后订单管理

汽车库存管理

配件库存管理

客户管理

员工管理

员工管理

日志管理

Druid监控

四,核心代码展示

package com.gk.carshopsys.controller;
import com.github.pagehelper.PageInfo;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Admin;
import com.gk.carshopsys.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpSession;
import java.lang.reflect.Array;
import java.sql.Date;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class AdminController {
    @Autowired
    private AdminService adminService;
    //初始页面跳转登录页
    @RequestMapping("/")
    public String tologin(){
      return "login";
    };
    //跳转登录页
    @RequestMapping("/login")
    public String login(){
        return "login";
    };
    //主页跳转
    @RequestMapping("/index")
    public String toindex(){return "index";}
    //登录页响应页面跳转
    @PostMapping ("/login.action")
    public String adminlogin(@RequestParam("user") String user,
                             @RequestParam("username") String username,
                             @RequestParam("password") String password, Model model, HttpSession session){
        Admin admin=adminService.loginAdmin(username,password);
        if(admin!=null){
            session.setAttribute("loginUser",username);
            return "redirect:/index";
        }else{
            model.addAttribute("msg", "密码或者账号有误,请重新输入");
            return "login";
        }
    } ;
    //退出登录
    @RequestMapping("/logout")
    public String logout(HttpSession session){
        session.invalidate();
        return "redirect:/login";
    };
    //管理员用户列表跳转
    @RequestMapping("/adminlist")
    public  String toadminlist(){
        return "adminlist";
    };
    //返回管理员用户列表
    @Log("查询管理员")
    @RequestMapping("/adminlist/query")
    @ResponseBody
    public List<Admin> findAdmin(@RequestBody Map<String,String> param){
        String username = param.get("username");
        String id_s = param.get("id");
        if (id_s!=null && !id_s.equals("")){
            try{
                Integer id = Integer.parseInt(id_s);
                return adminService.findAdminByIdAndUsername(id,username);
            }catch (ClassCastException e){
                return adminService.findAdminByIdAndUsername(null,username);
            }
        }else {
            return adminService.findAdminByIdAndUsername(null,username);
        }
    };
    //管理员用户添加
    //RedirectAttributesModelMap类防止重定向后model丢失
    @Log("添加管理员")
    @PostMapping("/adminlist/add")
    public  String adminlistadd(@RequestParam("add_adminname") String username,
                                @RequestParam("add_password") String password,RedirectAttributesModelMap model){
        int result = adminService.addAdmin(username,password);
        if(result==-1){
            model.addFlashAttribute("addmsg","插入失败,用户名已存在,请重新插入");
            return "redirect:/adminlist";
        }
        if(result==1){
            model.addFlashAttribute("addmsg","插入成功");
        }else{
            model.addFlashAttribute("addmsg","插入未知错误");
        }
            return "redirect:/adminlist";
        };
    // 管理员用户更新
    @Log("修改管理员")
    @PostMapping("/adminlist/upadte")
    public String adminlistupadte(@RequestParam("update_id") Integer id,
                                  @RequestParam("update_adminname") String username,
                                  @RequestParam("update_password") String password,RedirectAttributesModelMap model){
        int result=adminService.updateAdmin(id,username,password);
        if(result==-1){
            model.addFlashAttribute("updatemsg","修改失败,用户名已存在,请重新修改");
            return "redirect:/adminlist";
        }
        if (result==1){
            model.addFlashAttribute("updatemsg","修改成功");
        }else {
            model.addFlashAttribute("updatemsg","修改失败,未知错误");
        }
        return "redirect:/adminlist";
    };
    //管理员用户批量删除
    @Log("删除管理员")
    @ResponseBody
    @RequestMapping("/adminlist/del")
    public Map<String,Integer> adminlistdel(@RequestBody List<Integer> ids){
        int result = adminService.delAdmin(ids);
        Map<String,Integer> map = new HashMap<>();
        map.put("code",result);
        return map;
    }
}
package com.gk.carshopsys.controller;
import com.alibaba.excel.EasyExcel;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Car;
import com.gk.carshopsys.pojo.Cust;
import com.gk.carshopsys.service.CarService;
import com.gk.carshopsys.utils.CarDataListener;
import com.gk.carshopsys.utils.CustDataListener;
import com.gk.carshopsys.utils.ExcelUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class CarController {
    @Autowired
    private CarService carService;
    //Excel参数
    private HashMap<String,String> param;
    //excel传参
    @PostMapping("/carlist/excelparamset")
    @ResponseBody
    public void excelset(@RequestBody HashMap<String,String> params){
        param= params;
    }
    //excel下载
    @Log("导出汽车库存")
    @GetMapping("/carlist/excelexport")
    @ResponseBody
    public String excelexport(HttpServletResponse response) throws Exception {
        //导出的参数
        String id_s = param.get("id");
        String carname = param.get("carname");
        String brand = param.get("brand");
        String color = param.get("color");
        String type = param.get("type");
        String configuration = param.get("configuration");
        String low_price = param.get("low_price");//需要转型
        String hight_price = param.get("hight_price");//需要转型
        Car car = new Car();
        if(id_s!=null && !id_s.equals("")){
            try {
                Long id = Long.valueOf(id_s);
                car.setId(id);
            }catch (ClassCastException e){
            }finally {
                car.setBrand(brand);
                car.setCarname(carname);
                car.setColor(color);
                car.setType(type);
                car.setConfiguration(configuration);
            }
        }
        car.setBrand(brand);
        car.setCarname(carname);
        car.setColor(color);
        car.setType(type);
        car.setConfiguration(configuration);
        ExcelUtils.export2Web(response, "汽车库存表", "汽车库存信息",Car.class,carService.findCar(car,low_price,hight_price));
        return "success";
        }
    // easyexcel上传文件
    @Log("导入汽车库存")
    @PostMapping("/carlist/excelimport")
    public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
        EasyExcel.read(file.getInputStream(), Car.class, new CarDataListener(carService)).sheet().doRead();
        return "redirect:/carlist";
    }
    //批量删除车型
    @Log("删除汽车库存")
    @ResponseBody
    @RequestMapping("/carlist/del")
    public Map<String,Integer> carlistdel(@RequestBody List<Integer> ids){
        int result = carService.delCar(ids);
        Map<String,Integer> map = new HashMap<>();
        map.put("code",result);
        return map;
    }
    @Log("更新汽车库存")
    @RequestMapping("/carlist/update")
    public String carUpdate(@RequestParam("update_id") Long id,
                            @RequestParam("update_brand") String brand,
                            @RequestParam("update_carname") String carname,
                            @RequestParam("update_price") Long price,
                            @RequestParam("update_color") String color,
                            @RequestParam("update_type") String type,
                            @RequestParam("update_quantity") Long quantity,
                            @RequestParam("update_configuration") String configuration,
                            RedirectAttributesModelMap model){
        Car car = new Car(id,brand,carname,price,color,type,quantity,configuration);
        int result =carService.updateCar(car);
        if(result==1){
            model.addFlashAttribute("addmsg","修改成功");
        }else {
            model.addFlashAttribute("addmsg","修改失败");
        }
        return "redirect:/carlist";
    }
    //查询车辆库存
    @Log("查询汽车库存")
    @RequestMapping("/carlist/query")
    @ResponseBody
    public List<Car> queryCar(@RequestBody HashMap<String,String> params){
        String id_s = params.get("id");
        String carname = params.get("carname");
        String brand = params.get("brand");
        String color = params.get("color");
        String type = params.get("type");
        String configuration = params.get("configuration");
        String low_price = params.get("low_price");//需要转型
        String hight_price = params.get("hight_price");//需要转型
        Car car = new Car();
        if(id_s!=null && !id_s.equals("")){
            try {
                Long id = Long.valueOf(id_s);
                car.setId(id);
            }catch (ClassCastException e){
            }finally {
                car.setBrand(brand);
                car.setCarname(carname);
                car.setColor(color);
                car.setType(type);
                car.setConfiguration(configuration);
            }
        }
        car.setBrand(brand);
        car.setCarname(carname);
        car.setColor(color);
        car.setType(type);
        car.setConfiguration(configuration);
        return carService.findCar(car,low_price,hight_price);
    }
    @Log("添加汽车库存")
    @RequestMapping("/carlist/add")
    public String carAdd(@RequestParam("add_brand") String brand,
                         @RequestParam("add_carname") String carname,
                         @RequestParam("add_price") Long price,
                         @RequestParam("add_color") String color,
                         @RequestParam("add_type") String type,
                         @RequestParam("add_quantity") Long quantity,
                         @RequestParam("add_configuration") String configuration,
                         RedirectAttributesModelMap model){
        Car car = new Car(brand,carname,price,color,type,quantity,configuration);
        int result =carService.addCar(car);
        if(result==1){
            model.addFlashAttribute("addmsg","添加车型成功");
        }else {
            model.addFlashAttribute("addmsg","添加车型失败,未知错误");
        }
        return "redirect:/carlist";
    }
    //跳转车辆库存管理页面
    @RequestMapping("/carlist")
    public String tocarlist(){
        return "carlist";
    }
}
package com.gk.carshopsys.controller;
import com.alibaba.excel.EasyExcel;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Car;
import com.gk.carshopsys.pojo.CarOrder;
import com.gk.carshopsys.pojo.CarOrderImport;
import com.gk.carshopsys.pojo.Cust;
import com.gk.carshopsys.service.CarOrderService;
import com.gk.carshopsys.utils.CarDataListener;
import com.gk.carshopsys.utils.CarOrderDataListener;
import com.gk.carshopsys.utils.ExcelUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class CarOrderController {
    @Autowired
    CarOrderService carOrderService;
    //Excel参数
    private HashMap<String,String> param;
    //excel传参
    @PostMapping("/carorderlist/excelparamset")
    @ResponseBody
    public void excelset(@RequestBody HashMap<String,String> params){
        param= params;
    }
    //excel下载
    @Log("导出汽车订单")
    @GetMapping("/carorderlist/excelexport")
    @ResponseBody
    public String excelexport(HttpServletResponse response) throws Exception {
            ExcelUtils.export2Web(response, "汽车订单表", "订单信息",CarOrder.class,carOrderService.findCarOrder(param));
            return "success";
    }
    // easyexcel上传文件
    @Log("导入汽车订单")
    @PostMapping("/carorderlist/excelimport")
    public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
        EasyExcel.read(file.getInputStream(), CarOrderImport.class, new CarOrderDataListener(carOrderService)).sheet().doRead();
        return "redirect:/carorderlist";
    }
    @RequestMapping("/carorderlist")
    public String toCarOrder(){
        return "carorderlist";
    }
    @Log("查询汽车订单")
    @RequestMapping("/carorderlist/query")
    @ResponseBody
    public List<CarOrder> quryCarOrderList(@RequestBody HashMap<String,String> params){
        return carOrderService.findCarOrder(params);
    }
    @Log("添加汽车订单")
    @RequestMapping("/carorderlist/add")
    public String addCarOrder(@RequestParam("add_carid") Long carid,
                              @RequestParam("add_custid") Long custid,
                              @RequestParam("add_empnum") String empnum,
                              @RequestParam("add_quantity") Integer quantity,
                              @RequestParam("add_state") String state,
                              @RequestParam("add_remarks") String remarks, RedirectAttributesModelMap model){
        int result = carOrderService.addCarOrder(carid,custid,empnum,quantity,state,remarks);
        if (result==-1){
            model.addFlashAttribute("addmsg","添加失败,车辆不存在");
            return "redirect:/carorderlist";
        }
        if (result==-2){
            model.addFlashAttribute("addmsg","添加失败,客户不存在");
            return "redirect:/carorderlist";
        }
        if (result==-3){
            model.addFlashAttribute("addmsg","添加失败,员工不存在");
            return "redirect:/carorderlist";
        }
        if (result==-4){
            model.addFlashAttribute("addmsg","添加失败,库存不足");
            return "redirect:/carorderlist";
        }
        if (result==1){
            model.addFlashAttribute("addmsg","添加订单成功");
            return "redirect:/carorderlist";
        }else{
            model.addFlashAttribute("addmsg","添加订单失败,未知错误");
            return "redirect:/carorderlist";
        }
    }
    @Log("更新汽车订单")
    @RequestMapping("/carorderlist/update")
    public String updateCarOrder(@RequestParam("update_id") Long id,
                                 @RequestParam("update_state") String state,
                                 @RequestParam("update_remarks") String remarks,
                                 @RequestParam("update_quantity") Long quantity,
                                 @RequestParam("update_carid") Long carid,RedirectAttributesModelMap model){
        CarOrder carOrder = new CarOrder();
        carOrder.setId(id);
        carOrder.setRemarks(remarks);
        carOrder.setCarid(carid);
        if(state.equals("取消订单")){
            carOrder.setState("已取消");
        }else{
            carOrder.setState(state);
        }
        int result = carOrderService.updateCarOrderById(carOrder,quantity);
        if (result==1){
            model.addFlashAttribute("addmsg","修改订单成功");
            return "redirect:/carorderlist";
        }else{
            model.addFlashAttribute("addmsg","修改订单失败,未知错误");
            return "redirect:/carorderlist";
        }
    }
    //批量删除订单
    //订单批量删除
    @Log("删除汽车订单")
    @ResponseBody
    @RequestMapping("/carorderlist/del")
    public Map<String,Integer> carorderlistdel(@RequestBody List<Integer> ids){
        int result = carOrderService.delCarOrder(ids);
        Map<String,Integer> map = new HashMap<>();
        map.put("code",result);
        return map;
    }
}
package com.gk.carshopsys.controller;
import com.alibaba.excel.EasyExcel;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Cust;
import com.gk.carshopsys.pojo.Emp;
import com.gk.carshopsys.service.CustService;
import com.gk.carshopsys.utils.CustDataListener;
import com.gk.carshopsys.utils.EmpDataListener;
import com.gk.carshopsys.utils.ExcelUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class CustController {
    @Autowired
    CustService custService;
    //Excel参数
    private HashMap<String,String> param;
    //excel传参
    @PostMapping("/custlist/excelparamset")
    @ResponseBody
    public void excelset(@RequestBody HashMap<String,String> params){
        param= params;
    }
    //excel下载
    @Log("导出客户")
    @GetMapping("/custlist/excelexport")
    @ResponseBody
    public String excelexport(HttpServletResponse response) throws Exception {
        //导出的参数
        String custid_s = param.get("custid");
        String custname = param.get("custname");
        String job = param.get("job");
        String address = param.get("address");
        Cust cust = new Cust();
        if (custid_s!=null && !custid_s.equals("")){
            try{
                Long custid=Long.parseLong(custid_s);
                cust.setid(custid);
            }catch (ClassCastException e){
            }finally {
                cust.setCust_name(custname);
                cust.setJob(job);
                cust.setAddress(address);
                ExcelUtils.export2Web(response, "客户表", "客户信息",Cust.class,custService.findCust(cust));
                return "success";
            }
        }else {
            cust.setCust_name(custname);
            cust.setJob(job);
            cust.setAddress(address);
            ExcelUtils.export2Web(response, "客户表", "客户信息",Cust.class,custService.findCust(cust));
            return "success";
        }
    }
    // easyexcel上传文件
    @Log("导入客户")
    @PostMapping("/custlist/excelimport")
    public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
        EasyExcel.read(file.getInputStream(), Cust.class, new CustDataListener(custService)).sheet().doRead();
        return "redirect:/custlist";
    }
    //跳转客户管理页面
    @RequestMapping("/custlist")
    public String tocustlist(){
        return "custlist";
    }
    //返回查询客户列表
    @Log("查询客户")
    @RequestMapping("/custlist/query")
    @ResponseBody
    public List<Cust> findcust(@RequestBody HashMap<String,String> params){
        //接收的数据
        String custid_s = params.get("custid");
        String custname = params.get("custname");
        String job = params.get("job");
        String address = params.get("address");
        Cust cust = new Cust();
        if (custid_s!=null && !custid_s.equals("")){
            try{
                Long custid=Long.parseLong(custid_s);
                cust.setid(custid);
            }catch (ClassCastException e){
            }finally {
                cust.setCust_name(custname);
                cust.setJob(job);
                cust.setAddress(address);
                return custService.findCust(cust);
            }
        }else {
            cust.setCust_name(custname);
            cust.setJob(job);
            cust.setAddress(address);
            return custService.findCust(cust);
        }
    }
//    添加客户
    @Log("添加客户")
    @PostMapping("/custlist/add")
    public  String addcust(@RequestParam("add_custname") String name,
                           @RequestParam("add_sex") String sex,
                           @RequestParam("add_job") String job,
                           @RequestParam("add_telphone") String telphone,
                           @RequestParam("add_address") String address,
                           RedirectAttributesModelMap model){
        Cust add_cust =new Cust(name,sex,job,telphone,address);
        int result = custService.addCust(add_cust);
        if(result==1){
            model.addFlashAttribute("addmsg","添加客户成功");
            return "redirect:/custlist";
        }else {
            model.addFlashAttribute("addmsg","添加客户失败,未知错误");
            return "redirect:/custlist";
        }
   }
   //更新修改客户
    @Log("更新客户")
    @PostMapping("/custlist/update")
    public String updatecust(@RequestParam("update_custid") Long id,
                             @RequestParam("update_custname") String name,
                             @RequestParam("update_sex") String sex,
                             @RequestParam("update_job") String job,
                             @RequestParam("update_telphone") String telphone,
                             @RequestParam("update_address") String address,
                             RedirectAttributesModelMap model){
        Cust update_cust =new Cust(id,name,sex,job,telphone,address);
        int result = custService.updateCust(update_cust);
        if(result==1){
            model.addFlashAttribute("updatemsg","修改客户成功");
            return "redirect:/custlist";
        }else {
            model.addFlashAttribute("updatemsg","修改客户失败,未知错误");
            return "redirect:/custlist";
        }
    }
    //批量删除客户
    //客户批量删除
    @Log("删除客户")
    @ResponseBody
    @RequestMapping("/custlist/del")
    public Map<String,Integer> custlistdel(@RequestBody List<Integer> ids){
        int result = custService.delCust(ids);
        Map<String,Integer> map = new HashMap<>();
        map.put("code",result);
        return map;
    }
}

五,项目总结

     项目整体设计简洁大方,功能实用性强,前后端交互比较符合人性化需求,比较适合用做毕业设计和课程设计使用。

 

相关文章
|
3天前
|
XML Java 数据库连接
SpringBoot集成Flowable:打造强大的工作流管理系统
在企业级应用开发中,工作流管理是一个核心组件,它能够帮助我们定义、执行和管理业务流程。Flowable是一个开源的工作流和业务流程管理(BPM)平台,它提供了强大的工作流引擎和建模工具。结合SpringBoot,我们可以快速构建一个高效、灵活的工作流管理系统。本文将探讨如何将Flowable集成到SpringBoot应用中,并展示其强大的功能。
19 1
|
12天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
21天前
|
存储 安全 Java
打造智能合同管理系统:SpringBoot与电子签章的完美融合
【10月更文挑战第7天】 在数字化转型的浪潮中,电子合同管理系统因其高效、环保和安全的特点,正逐渐成为企业合同管理的新宠。本文将分享如何利用SpringBoot框架实现一个集电子文件签字与合同管理于一体的智能系统,探索技术如何助力合同管理的现代化。
55 4
|
21天前
|
前端开发 Java Apache
SpringBoot实现电子文件签字+合同系统!
【10月更文挑战第15天】 在现代企业运营中,合同管理和电子文件签字成为了日常活动中不可或缺的一部分。随着技术的发展,电子合同系统因其高效性、安全性和环保性,逐渐取代了传统的纸质合同。本文将详细介绍如何使用SpringBoot框架实现一个电子文件签字和合同管理系统。
40 1
|
8天前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
25 0
|
27天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
132 1
|
2月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
140 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
2月前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
214 1
|
11天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
92 62
|
9天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
25 2
下一篇
无影云桌面