从零搭建企业级前后端分离Web应用(附完整源码+部署指南)
目录一、项目前言二、项目整体介绍2.1 项目简介2.2 核心功能模块2.3 项目亮点区别于普通入门项目三、核心技术栈详解3.1 后端技术栈3.2 前端技术栈四、开发环境配置4.1 基础环境4.2 环境搭建步骤五、项目架构设计核心重点5.1 整体架构流程5.2 后端分层架构5.3 前端工程化架构六、核心功能源码解析6.1 后端统一结果封装企业级必备6.2 JWT登录权限认证核心逻辑6.3 前端Axios全局请求封装七、项目部署教程Linux服务器7.1 后端部署7.2 前端部署八、常见问题踩坑总结九、项目优化拓展方向十、源码获取十一、总结一、项目前言在Web开发领域前后端分离架构已经成为目前企业开发的主流标准彻底摒弃了传统JSP、模板渲染的耦合开发模式实现前端视图、后端服务、数据层的完全解耦具备开发效率高、扩展性强、适配多端、便于维护迭代等核心优势。很多初学者在学习Web开发时大多只会碎片化的知识点无法搭建一套完整、规范、可落地的项目存在代码混乱、架构不规范、不会联调、无法部署等问题。本文将手把手带大家从零搭建一套轻量企业级Web管理系统项目严格遵循企业开发规范封装通用工具类、统一接口返回格式、完善权限控制同时兼顾轻量化降低入门难度可直接用于课程设计、毕业设计、个人项目实战及小型业务落地。二、项目整体介绍2.1 项目简介本项目是一套基于SpringBoot3 Vue3 Vite MySQL的前后端分离Web后台管理系统涵盖用户管理、权限控制、菜单管理、日志管理、数据分页查询、文件上传、全局异常处理等企业常用核心功能。项目代码结构清晰、注释完整、无冗余代码严格遵循MVC分层架构同时集成工程化工具适配开发、测试、生产多环境是一套高性价比的实战入门项目。2.2 核心功能模块基础权限模块用户登录、退出、密码加密、角色权限分配、接口权限拦截、未登录拦截用户管理模块用户新增、编辑、删除、批量删除、分页查询、状态启用/禁用菜单管理模块动态菜单渲染、菜单新增、修改、排序、权限绑定系统日志模块记录用户登录、操作日志支持日志查询、清空通用工具模块文件上传下载、全局异常捕获、统一结果返回、参数校验2.3 项目亮点区别于普通入门项目✅架构规范严格遵循MVC分层细化Controller、Service、Dao、Entity、VO、DTO分层符合企业开发标准✅权限完善基于Token实现无状态登录适配前后端分离权限体系支持细粒度权限控制✅统一封装全局统一接口返回格式、统一异常处理、统一参数校验避免代码冗余✅工程化落地前端Vite构建、按需引入组件、路由懒加载后端多环境配置、日志分级✅极易扩展模块化开发新增业务模块无需改动核心代码适配二次开发✅零基础可跑通提供完整环境配置教程、数据库脚本、依赖版本解决环境报错问题三、核心技术栈详解3.1 后端技术栈核心框架SpringBoot 3.2.x快速开发、自动配置、简化企业级开发持久层框架MyBatis-Plus 3.5.x简化CRUD操作内置分页、条件查询无需手写SQL权限框架JJWT实现Token签发、校验、刷新无状态权限认证数据库MySQL 8.0稳定适配主流版本兼容所有服务器工具依赖Lombok简化实体类代码、Hutool通用工具类、Validation参数校验构建工具Maven 3.8项目依赖管理、打包部署3.2 前端技术栈核心框架Vue3组合式API代码更简洁、复用性更强构建工具Vite极速冷启动、按需编译相较于Webpack开发效率大幅提升路由管理Vue Router 4.x实现页面路由跳转、路由拦截、权限路由控制状态管理PiniaVue3官方推荐状态管理替代Vuex轻量化、易上手UI组件库Element Plus企业级UI组件适配后台管理系统组件齐全网络请求Axios封装全局请求、响应拦截统一处理请求头、错误提示四、开发环境配置本项目所有依赖版本均经过实测适配严格按照以下版本配置可规避90%的环境报错。4.1 基础环境JDK 17适配SpringBoot3必须对应版本MySQL 8.0Maven 3.8Node.js 18.xIDEIDEA / VS Code4.2 环境搭建步骤1. 数据库搭建新建数据库web_admin_system字符集设置为utf8mb4排序规则utf8mb4_unicode_ci导入项目根目录下的sql脚本自动生成所有数据表和初始测试数据。2. 后端项目启动修改application.yml配置文件中的数据库账号、密码配置JWT密钥、过期时间等待Maven依赖加载完成启动主启动类默认端口8080启动成功后访问localhost:8080可查看接口文档。3. 前端项目启动前端目录执行npm install安装依赖执行npm run dev启动项目默认端口5173访问localhost:5173即可进入系统登录页面。五、项目架构设计核心重点5.1 整体架构流程前端发起Axios请求 → 路由权限拦截 → 携带Token请求头 → 后端拦截器校验Token → 控制器接收请求 → 参数校验 → Service业务处理 → Dao层操作数据库 → 统一封装结果返回 → 前端渲染数据5.2 后端分层架构采用标准多层架构职责单一、解耦彻底Entity数据库实体类与数据表字段一一对应DTO数据传输对象接收前端请求参数完成参数封装VO视图对象封装后端返回前端的数据过滤冗余字段Controller控制层接收前端请求调用业务接口不处理核心业务Service业务层编写核心业务逻辑、事务控制、数据处理Mapper数据访问层负责数据库CRUD操作Config配置类拦截器、跨域、权限、MyBatis-Plus配置Common公共模块统一返回结果、全局异常、工具类、常量类5.3 前端工程化架构api统一封装所有接口请求按模块拆分便于维护components公共全局组件分页、弹窗、搜索栏等复用组件router路由配置、路由拦截、动态权限路由storePinia状态管理存储用户信息、权限、菜单utils通用工具函数、请求拦截、时间格式化、加密工具views页面视图按业务模块拆分页面文件六、核心功能源码解析6.1 后端统一结果封装企业级必备所有接口统一返回格式避免返回数据混乱前端统一处理响应逻辑代码标准化。Data AllArgsConstructor NoArgsConstructor public class ResultT { // 响应码 200成功 500失败 private Integer code; // 响应信息 private String msg; // 响应数据 private T data; // 成功返回带数据 public static T ResultT success(T data) { return new Result(200, 操作成功, data); } // 成功返回无数据 public static T ResultT success() { return new Result(200, 操作成功, null); } // 失败返回 public static T ResultT error(String msg) { return new Result(500, msg, null); } }6.2 JWT登录权限认证核心逻辑基于Token实现无状态登录用户登录成功后签发Token后续所有请求携带Token后端拦截器自动校验无需存储会话适配分布式部署。// 生成Token public String generateToken(User user) { MapString, Object map new HashMap(); map.put(userId, user.getId()); map.put(username, user.getUsername()); return JwtUtil.generateToken(map, JWT_SECRET, JWT_EXPIRE); } // 校验Token public boolean verifyToken(String token) { try { JwtUtil.parseToken(token, JWT_SECRET); return true; } catch (Exception e) { return false; } }6.3 前端Axios全局请求封装统一处理请求头、超时时间、错误提示、Token携带减少重复代码提升开发效率。import axios from axios import { ElMessage } from element-plus import { useUserStore } from /store/user const service axios.create({ baseURL: http://localhost:8080, timeout: 5000 }) // 请求拦截器 service.interceptors.request.use( config { const userStore useUserStore() // 携带Token if (userStore.token) { config.headers.Authorization Bearer ${userStore.token} } return config }, error { return Promise.reject(error) } ) // 响应拦截器 service.interceptors.response.use( res res.data, error { ElMessage.error(error.message || 请求失败) return Promise.reject(error) } ) export default service七、项目部署教程Linux服务器7.1 后端部署IDEA执行Maven打包命令clean package生成jar包将jar包上传至Linux服务器新建启动脚本start.sh执行java -jar 项目名.jar --spring.profiles.activeprod启动项目配置防火墙开放8080端口配置开机自启7.2 前端部署前端执行npm run build打包生成dist文件夹将dist文件上传至服务器Nginx静态资源目录配置Nginx反向代理转发后端接口请求重启Nginx完成线上部署八、常见问题踩坑总结整理项目开发、部署过程中高频报错问题帮大家避坑跨域问题后端已全局配置跨域拦截器本地开发无需手动处理线上Nginx可二次配置跨域Token过期报错前端添加响应拦截检测401状态码自动清空登录状态并跳转登录页数据库连接失败核对数据库版本、账号密码、数据库地址确保MySQL8.0开启远程连接前端依赖报错删除node_modules和lock文件重新执行npm install适配Node18版本分页数据为空检查MyBatis-Plus分页插件是否配置生效核对数据表数据是否正常九、项目优化拓展方向本项目为基础企业级模板可根据需求二次拓展适配更多场景接入Redis实现Token缓存、接口限流、热点数据缓存集成Swagger/Knife4j生成可视化接口文档添加定时任务实现定时数据统计、日志清理接入OSS实现云端文件存储替代本地文件上传添加数据权限、部门权限适配复杂企业权限场景集成Docker容器化部署简化运维流程十、源码获取本项目完整开源免费包含全套前后端源码、MySQL数据库脚本、环境配置文档、部署教程、详细注释代码。需要源码的小伙伴可以点赞关注评论私信回复【web项目】即可免费获取完整源码支持二次开发和毕业设计使用。十一、总结这套前后端分离Web项目覆盖了现代Web开发的核心知识点和企业级开发规范从架构设计、代码封装、功能开发到线上部署形成了完整的开发闭环。对于初学者而言通过该项目可以快速打通前后端开发壁垒理解分层架构、权限机制、接口联调的核心逻辑对于进阶开发者可基于该模板快速迭代业务功能大幅提升开发效率。后续会持续更新项目优化教程、新增功能模块、Docker部署、微服务改造等内容欢迎大家关注博主持续学习进阶