web应用技术第8次课(3)--基于springboot+mybatis+vue的项目实战之(后端+前后端联调)
任务驱动实现自己项目中的一个增删改查的页面的查询和删除功能的页面。本项目建立生成系统的用户信息列表一、使用Apifox准备好json数据的mock地址在Apifox中新建项目新建接口以及设置地址、请求和响应{code:1,msg:success,data:[{id:1,username:刘永添,email:liuyongtianwust.edu.cn,phone:13812345678,role:admin,status:1,createdAt:2025-06-27},{id:2,username:张三,email:zhangsanexample.com,phone:13900001111,role:user,status:1,createdAt:2025-06-26}]}1浏览器 中测试云mock地址的数据是否我们想要的。https://m1.apifoxmock.com/m1/8502457-8276595-default/userfindAll二、编写基于vue的静态页面2.1 拷贝axios 和vue的被包含文件 脚本语言2.2 编写html文件前端启动成功三、前后端联调1、建立项目结构文件夹编写实体类Entity文件User.java对应数据库 sys_user 表路径D:\web.html\login\src\main\java\com\resume\login\entity\User.javaResult.java统一响应包装类路径D:\web.html\login\src\main\java\com\resume\login\entity\Result.java编写 Mapper 文件并测试 SQL 语句是否正确路径D:\web.html\login\src\main\java\com\resume\login\mapper\UserMapper.java编写 Service 文件UserService.java接口路径D:\web.html\login\src\main\java\com\resume\login\service\UserService.javaUserServiceImpl.java实现路径D:\web.html\login\src\main\java\com\resume\login\service\impl\UserServiceImpl.java编写 Controller 文件路径D:\web.html\login\src\main\java\com\resume\login\controller\UserController.java测试后端程序是否正确配置 application.yml路径D:\web.html\login\src\main\resources\application.ymlserver:port:8080spring:datasource:url:jdbc:mysql://localhost:3306/resume_db?useUnicodetruecharacterEncodingutf-8serverTimezoneAsia/Shanghaiusername:root password:driver-class-name:com.mysql.cj.jdbc.Drivermybatis:mapper-locations:classpath:mapper/*.xml type-aliases-package: com.resume.login.entity configuration: map-underscore-to-camel-case: true2.启动项目cd D:\web.html\loginmvnw spring-boot:run3. 浏览器测试接口plainhttp://localhost:8080/api/users/userfindAllJson前后端联调修改 user_list.html将 Mock 地址替换为后端真实接口并启用删除功能。路径D:\web.html\login\src\main\resources\static\user_list.html!DOCTYPEhtmlhtml langenheadmeta charsetUTF-8meta nameviewportcontentwidthdevice-width, initial-scale1.0title用户列表管理/titlestylebody{font-family:MicrosoftYaHei,sans-serif;background:#f5f5f5;margin:0;padding:20px;}h1{text-align:center;color:#333;margin-bottom:20px;}.container{width:80%;margin:0auto;}.toolbar{text-align:right;margin-bottom:10px;}.toolbar a{color:#1890ff;text-decoration:none;font-size:14px;}table{margin:0auto;border-collapse:collapse;width:100%;background:#fff;box-shadow:02px8pxrgba(0,0,0,0.1);}th,td{border:1px solid #e0e0e0;padding:12px;text-align:center;}th{background:#1890ff;color:#fff;font-weight:600;}tr:hover{background:#f0f7ff;}.btn{padding:4px12px;border:none;border-radius:4px;cursor:pointer;font-size:12px;margin:02px;}.btn-del{background:#ff4d4f;color:#fff;}.btn:hover{opacity:0.8;}.tag-admin{background:#e6f7ff;color:#1890ff;padding:2px8px;border-radius:4px;font-size:12px;}.tag-user{background:#f5f5f5;color:#666;padding:2px8px;border-radius:4px;font-size:12px;}.status-on{color:#52c41a;}.status-off{color:#ff4d4f;}.link-edit{color:#1890ff;text-decoration:none;margin-right:8px;}/style/headscript src./js/vue.js/scriptscript src./js/axios-0.18.0.js/scriptbodyh1用户列表管理/h1div idappclasscontainerdivclasstoolbara hrefuser_add.html新增用户/a/divtabletrthID/thth用户名/thth邮箱/thth电话/thth角色/thth状态/thth创建时间/thth操作/th/trtr aligncenterv-foruser in tableDatatd{{user.id}}/tdtd{{user.username}}/tdtd{{user.email}}/tdtd{{user.phone}}/tdtdspan:classuser.role admin ? tag-admin : tag-user{{user.roleadmin?管理员:普通用户}}/span/tdtd:classuser.status 1 ? status-on : status-off{{user.status1?启用:禁用}}/tdtd{{user.createdAt?user.createdAt.replace(T, ):}}/tdtdaclasslink-edit:hrefuser_edit.html?id user.id修改/abuttonclassbtn btn-delclickdeleteUser(user.id)删除/button/td/tr/table/div/bodyscriptnewVue({el:#app,data(){return{tableData:[]}},mounted(){this.loadData();},methods:{loadData(){axios.get(/api/users/userfindAllJson).then(res{if(res.data.code1){this.tableDatares.data.data;}});},deleteUser(id){if(confirm(确定要删除该用户吗)){axios.post(/api/users/deletebyID?idid).then(res{alert(删除成功);this.loadData();});}}},created(){this.loadData();}});/script/htmladd和edit的暂时省略表单修改删除“张三”阶段复盘1.Apifox Mock 阶段步骤1目的 前端先不依赖后端用假数据把页面调通。关键操作新建接口 → 请求方法 GET → 路径 /userfindAll开启云端 Mock新建 Mock 期望 → 在 Body 里填自定义 JSON不是 Mock 脚本复制生成的 Mock 地址浏览器测试确认返回正确数据易错点不要直接请求 localhost:8080后端还没启动Mock 脚本区域只能写 JS不能直接贴 JSON建议关闭脚本用期望2.后端开发步骤3分层结构必须按这个顺序写entity → 实体类POJO映射数据库表mapper → Mapper Select/Insert/Update/Delete直接写 SQLservice → 业务层接口 impl 实现类加 Servicecontroller → RestController RequestMapping暴露 HTTP 接口关键注解Mapper让 MyBatis 生成代理类替代 XMLServiceSpring 容器管理Autowired自动注入依赖CrossOrigin(origins “*”)解决跨域RequestBody接收前端 JSON 参数新增/修改必须用两个查询接口的区别/userfindAll → 返回 List纯数组/userfindAllJson → 返回 Result{code, msg, data}统一包装前后端联调时前端用 /userfindAllJson通过 res.data.data 取列表。3.前端开发步骤2 4文件位置 src/main/resources/static/Spring Boot 默认静态资源目录核心依赖HTMLVue 生命周期created() / mounted()页面加载时调用 loadData() 拉取数据methods定义 deleteUser()、submit() 等交互逻辑Axios 请求写法JavaScript// 查询GETaxios.get(‘/api/users/userfindAllJson’).then(res { … })// 删除POST 参数拼 URLaxios.post(‘/api/users/deletebyID?id’ id).then(res { … })// 新增/修改POST JSON 体axios.post(‘/api/users/addUser’, this.user).then(res { … })时间格式化HTML{{user.createdAt ? user.createdAt.replace(‘T’, ’ ) : ‘’}}4.前后端联调步骤4切换点 把前端 axios.get 里的 Mock 地址换成后端真实地址表格阶段 前端请求地址Mock 阶段 https://m1.apifoxmock.com/m1/xxx/xxx-default/userfindAll联调阶段/api/users/userfindAllJson

相关新闻

Crypto Lifeline:当“加密大佬”为你打工

Crypto Lifeline:当“加密大佬”为你打工

时隔很久,链游的风再次吹了起来,目前sol链上好几款链游非常火热,单个游戏日内在线人数更是高达几千人,而龙头代币Kins市值高点更是突破20m,没想到在短短几天内吸引了大批玩家进场,因此链游叙事再次成为了市…

2026/6/28 6:03:25阅读更多 →
2026最新命理软件:新手选择命理排盘软件时应该先看什么?

2026最新命理软件:新手选择命理排盘软件时应该先看什么?

很多人搜索“命理软件推荐”“命理排盘软件推荐”时,通常不是只想找一个软件名称,而是想解决一个更基础的问题:刚开始接触八字排盘、命理术语和易学内容,应该怎样判断一款工具是否适合自己。对新手来说,命理软件是否合…

2026/6/28 6:03:25阅读更多 →
DeepSpeed介绍

DeepSpeed介绍

🔍 DeepSpeed 技术详解DeepSpeed 是微软开源的一个深度学习优化库,专门用来解决大模型训练时遇到的两大核心痛点:显存不够用和训练太慢。你可以把它理解为给 PyTorch 加了一个"涡轮增压器",让原本跑不动的大模型变得可以…

2026/6/28 6:03:25阅读更多 →
计算机网络(四):数据链路层(功能概述、组帧/封装成帧、差错控制、流量控制与可靠传输机制)

计算机网络(四):数据链路层(功能概述、组帧/封装成帧、差错控制、流量控制与可靠传输机制)

无人机图传技术全面解析:模拟与数字异同及应用【区块链】Fiat24 深度解读(含 Flutter 集成与 SDK 骨架)计算机工作原理(简单介绍)Linux——自动化建构make/makefile海康 智能相机二开 绘制底图 测试工具应用框web3D、webGL、webGPU、webGIS、webXR、webC…

2026/6/28 7:48:33阅读更多 →
钢铁厂设备健康监测系统:AIoT技术驱动的智慧运维革命?

钢铁厂设备健康监测系统:AIoT技术驱动的智慧运维革命?

uv 配置国内镜像加速教程FFmpeg 核心 API 系列:avcodec_find_decoder / avcodec_alloc_context3 / avcodec_open2基于LINUX平台使用C语言实现MQTT协议连接华为云平台(IOT)(网络编程)使用Java连接redis以及开放redis端口…

2026/6/28 7:48:33阅读更多 →
Django 路由详解

Django 路由详解

浅谈WebSocket港大和字节携手打造WorldWeaver:以统一建模方案整合感知条件,为长视频生成领域带来质量与一致性双重飞跃。【面板数据】上市公司行政处罚数据集(2003-2023年)0.4 tf.keras搭建神经元网络处理minist手写字体前端开发工…

2026/6/28 7:48:33阅读更多 →
【办公类-117-01】20250924通义万相视频2.5——三个小人(幼儿作品动态化)

【办公类-117-01】20250924通义万相视频2.5——三个小人(幼儿作品动态化)

GPT的前世今生及发展Linux网络应用层自定义协议与序列化基于「YOLO目标检测 多模态AI分析」的光伏板缺陷检测分析系统(vue flask 模型训练 AI算法)VMware ubuntu 空间清理与磁盘扩展CF1055 C、D第8章:扩展边界:技术之外的视野&…

2026/6/28 7:48:33阅读更多 →
Docker 部署 Nginx 完整指南

Docker 部署 Nginx 完整指南

【Linux】操作系统的认识Docker在window安装要区分window11报错ERROR: request returned Internal Server Error for API route and versionarp broadcast enable 概念及题目范式革命:RDMA 如何让网络成为 “分布式内存总线”Socket网络编程(1&#xff0…

2026/6/28 7:48:33阅读更多 →
MCP、Agent 很火,但摄影行业已经开始拼「实时数据流」能力了

MCP、Agent 很火,但摄影行业已经开始拼「实时数据流」能力了

最近几个月,技术圈最火的几个关键词:AI AgentMCP(Model Context Protocol)实时工作流边缘计算大家讨论的核心问题其实只有一个:如何让数据实时进入 AI,并立即产生价值?看起来这是 AI 领域的新问…

2026/6/28 7:43:33阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →