JAVA开发学习-day21

JAVA开发学习-day21

1. 删除表单数据

根据ElementUI的官方组件指南,为表单每列的数据添加删除按钮

<el-table :data="tableData" style="width: 100%"><el-table-column prop="id" label="ID" width="180" /><el-table-column prop="code" label="编号" width="180" /><el-table-column prop="name" label="姓名" /><el-table-column prop="salary" label="薪资" /><el-table-column label="操作"><template #default="scope">
<el-button type="danger" @click="del(scope.$index, scope.row)">删除</el-button></template></el-table-column>
</el-table>

在script中编写del方法,使用户点击按钮时向后端发送delete请求,从而删除该行数据,删除后再刷新表单数据,完成删除操作

<script setup>
const del = function (index, row) {ElMessageBox.confirm('确认删除该行数据吗?','警告',{confirmButtonText: '确认',cancelButtonText: '取消',type: 'warning',}).then(() => {//提交数据easyapi.del('/api/staff', row.id)//刷新表单数据tableData.value.splice(index, 1)//提示删除成功ElMessage({type: 'success',message: '删除成功',})}).catch(() => {ElMessage({type: 'info',message: '取消删除',})})
}
</script>

api/index.js

import http from '../util/http.js';const API={get:(url)=>{return http({url:url,method:'get'})},del:(url,id)=>{//url /api/staff//id  12//url = /api/staff/12//url = http://localhost:8080/staff/12url = url + '/' + id;return http({url:url,method:'delete'})}
};export default API;

此时点击删除即可实现删除数据

2. 编辑数据

为每行数据添加编辑按钮,我们想要点击编辑时弹出一个编辑信息的弹出框,ElementUI中寻找合适的组件,并实现点击编辑按钮使弹出框可视,且行原有的数据已经被加载至输入框中。

添加新增按钮和编辑弹出框

<el-table :data="tableData" style="width: 100%"><el-table-column prop="id" label="ID" width="180" /><el-table-column prop="code" label="编号" width="180" /><el-table-column prop="name" label="姓名" /><el-table-column prop="salary" label="薪资" /><el-table-column label="操作"><template #default="scope">
<el-button type="danger" @click="del(scope.$index, scope.row)">删除</el-button>
<el-button type="success" @click="edit(scope.$index, scope.row)">编辑</el-button></template></el-table-column>
</el-table><!--start 新增信息的弹出框 -->
<el-dialog v-model="addWinVisible" title="新增员工数据" width="500"><el-form :model="addObject"><el-form-item label="编号" :label-width="80"><el-input v-model="addObject.code" autocomplete="off" /></el-form-item><el-form-item label="姓名" :label-width="80"><el-input v-model="addObject.name" autocomplete="off" /></el-form-item><el-form-item label="薪资" :label-width="80"><el-input v-model="addObject.salary" autocomplete="off" /></el-form-item><el-form-item label="用户名" :label-width="80"><el-input v-model="addObject.username" autocomplete="off" /></el-form-item></el-form><template #footer><div class="dialog-footer"><el-button @click="closeAddWin">取消</el-button><el-button type="primary" @click="addSave">确认</el-button></div></template>
</el-dialog>
<!--end 新增信息的弹出框 -->

在script中实现edit方法,使得点击编辑按钮弹出框可以出现

<script setup>
import { ref, onMounted } from 'vue'
import easyapi from '../api'
import { ElMessage, ElMessageBox } from 'element-plus'
import { checkNode } from 'element-plus/es/components/cascader-panel/src/utils.mjs';
//定义绑定的数据
const tableData = ref([]);
//控制新增信息窗口是否显示
const editWinVisible = ref(false);
//编辑数据绑定对象
const editObject = ref({});//显示编辑窗口
const openEditWin = function () {editWinVisible.value = true;
}
const closeEditWin = function () {editWinVisible.value = false;
}//点击编辑按钮,执行的方法
const edit = function (index, row) {//绑定要修改的数据editObject.value = row;editObject.value.id = row.id;editObject.value.code = row.code;editObject.value.name = row.name;editObject.value.salary = row.salary;editObject.value.username = row.username;editIndex = index;console.log(editObject.value)//打开对话框openEditWin();
}</script>

此时点击编辑按钮,可以看到弹出框弹出和输入框中的数据

在这里插入图片描述

编辑点击弹出框中的取消和确认按钮所触发的方法,使点击取消按钮时,隐藏弹出框;点击确认按钮时,向后端发送put请求来修改数据,并刷新表单,给出成功提示,并隐藏弹出框

<script setup>
import { ref, onMounted } from 'vue'
import easyapi from '../api'
import { ElMessage, ElMessageBox } from 'element-plus'
import { checkNode } from 'element-plus/es/components/cascader-panel/src/utils.mjs';
//定义绑定的数据
const tableData = ref([]);
//控制新增信息窗口是否显示
const editWinVisible = ref(false);
//编辑数据绑定对象
const editObject = ref({});
//记录编辑数据的下标
var editIndex = -1;//显示编辑窗口
const openEditWin = function () {editWinVisible.value = true;
}
const closeEditWin = function () {editWinVisible.value = false;
}//点击编辑按钮,执行的方法
const edit = function (index, row) {//绑定要修改的数据editObject.value = row;editObject.value.id = row.id;editObject.value.code = row.code;editObject.value.name = row.name;editObject.value.salary = row.salary;editObject.value.username = row.username;editIndex = index;console.log(editObject.value)//打开对话框openEditWin();
}
//保存修改编辑数据
const editSave = async () => {//发送请求let result = await easyapi.putJson('/api/staff', editObject.value)//刷新表单tableData.value[editIndex] = result.data;//提示ElMessage({type: 'success',message: '编辑数据成功',})//关闭窗口closeEditWin()
}</script>

api/index.js

import http from '../util/http.js';const API={get:(url)=>{return http({url:url,method:'get'})},del:(url,id)=>{//url /api/staff//id  12//url = /api/staff/12//url = http://localhost:8080/staff/12url = url + '/' + id;return http({url:url,method:'delete'})},putForm:function(url,params){return http({url:url,method:'put', params: params})},putJson:function(url,data){return http({url:url,method:'put',data:data})}
};export default API;

完成后,即可成功修改数据

3. 新增数据

在表单上方添加新增按钮,与编辑类似,点击新增按钮时会弹出一个新增的弹出框

<el-button type="primary" @click="openAddWin">新增</el-button>
<el-table :data="tableData" style="width: 100%"><el-table-column prop="id" label="ID" width="180" /><el-table-column prop="code" label="编号" width="180" /><el-table-column prop="name" label="姓名" /><el-table-column prop="salary" label="薪资" /><el-table-column label="操作"><template #default="scope">
<el-button type="danger" @click="del(scope.$index, scope.row)">删除</el-button>
<el-button type="success" @click="edit(scope.$index, scope.row)">编辑</el-button></template></el-table-column>
</el-table><!--start 新增信息的弹出框 -->
<el-dialog v-model="addWinVisible" title="新增员工数据" width="500"><el-form :model="addObject"><el-form-item label="编号" :label-width="80"><el-input v-model="addObject.code" autocomplete="off" /></el-form-item><el-form-item label="姓名" :label-width="80"><el-input v-model="addObject.name" autocomplete="off" /></el-form-item><el-form-item label="薪资" :label-width="80"><el-input v-model="addObject.salary" autocomplete="off" /></el-form-item><el-form-item label="用户名" :label-width="80"><el-input v-model="addObject.username" autocomplete="off" /></el-form-item></el-form><template #footer>
<div class="dialog-footer"><el-button @click="closeAddWin">取消</el-button><el-button type="primary" @click="addSave">确认</el-button></div></template>
</el-dialog>
<!--end 新增信息的弹出框 -->

当点击弹出框的确认按钮时便将绑定对象的数据通过post的方式发送到后端,并将返回的数据通过push方法插入到表单尾部中

<script setup>
import { ref, onMounted } from 'vue'
import easyapi from '../api'
import { ElMessage, ElMessageBox } from 'element-plus'
import { checkNode } from 'element-plus/es/components/cascader-panel/src/utils.mjs';
//定义绑定的数据
const tableData = ref([]);
//控制新增信息窗口是否显示
const addWinVisible = ref(false);
//新增数据绑定对象
const addObject = ref({});//显示新增窗口
const openAddWin = function () {//新增数据输入框中不需要初始数据addObject.value = {}addWinVisible.value = true;
}
const closeAddWin = function () {addWinVisible.value = false;
}const addSave = async function () {//保存新增的数据 addObject//发送请求let result = await easyapi.postJson('/api/staff', addObject.value);tableData.value.push(result.data);//刷新表单//提示新增成功ElMessage({type: 'success',message: '新增数据成功',})//关闭窗口closeAddWin()}
</script>

/api/index.js

import http from '../util/http.js';const API={get:(url)=>{return http({url:url,method:'get'})},del:(url,id)=>{url = url + '/' + id;return http({url:url,method:'delete'})},postForm:function(url,params){return http({url:url,method:'post', params: params})},postJson:function(url,data){return http({url:url,method:'post',data:data})},putForm:function(url,params){return http({url:url,method:'put', params: params})},putJson:function(url,data){return http({url:url,method:'put',data:data})}
};export default API;

完成后,就可以新增数据了

4. 查询数据

在表单的上面添加输入框和查询按钮,一个输入框输入员工编号,一个输入框输入姓名,当点击查询时通过这两项对数据进行模糊查询,将返回的值赋予表单,就实现了查询

添加按钮和输入框

<el-input v-model="checkObj.code" style="width: 150px" placeholder="请输入查询的编号" />
<el-input v-model="checkObj.name" style="width: 150px" placeholder="请输入查询的姓名" />
<el-button type="primary" @click="checkData">查询</el-button>
<el-button type="primary" @click="openAddWin">新增</el-button>
<el-table :data="tableData" style="width: 100%"><el-table-column prop="id" label="ID" width="180" /><el-table-column prop="code" label="编号" width="180" /><el-table-column prop="name" label="姓名" /><el-table-column prop="salary" label="薪资" /><el-table-column label="操作"><template #default="scope">
<el-button type="danger" @click="del(scope.$index, scope.row)">删除</el-button>
<el-button type="success" @click="edit(scope.$index, scope.row)">编辑</el-button></template></el-table-column>
</el-table>

编写后端模糊查询实现

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

实现前端方法和api
在这里插入图片描述

在这里插入图片描述

5. JSON Form-data

5.1 JSON

  • 定义JSON (JavaScript Object Notation)是一种轻量级的数据交换格式,其设计初衷是使之易于阅读和编写,并且便于机器解析和生成。
  • 内容类型:使用 JSON 格式发送数据时,内容类型(Content-Type)应设定为application/json

5.2 Form-data

  • 定义Form-data,或称表单数据,是一种编码方式,在 HTML 表单与服务器交互时常用,尤其兼容文件上传操作。
  • 内容类型:发送 Form-data 格式时,内容类型应设定为multipart/form-data

5.3 数据交换的深层对比

虽然从宏观的角度看,JSON 和 Form-data 的主要区别在于内容类型和数据格式,但在实际的使用场景中,两者的差异会影响它们的适用性。

应用场景

JSON

  • 复杂数据结构:JSON 非常适合传送具有复合结构的数据,例如列表或嵌套对象。
  • API 交互:在构建 RESTful API 时,JSON 几乎成为了标准选择,原因在于它的可读性和结构化特征使得开发者更容易创建和维护 API。

Form-data

  • 文件上传:Form-data 是处理文件上传的首选方法,尤其在 Web 表单中,需要同时提交文件和数据时,Form-data 展现出了其独特优势。
  • 传统 Web 表单:许多基于 HTML 表单的传统 Web 应用倾向于使用 Form-data 方式提交数据,因为这种方式不需要额外的 JavaScript 代码即可直接与表单元素交互。

性能考量

在讨论 JSON 与 Form-data 之间的优劣时,性能因素经常被提及。一般来说,JSON 因为其纯文本特性,在处理简单数据结构时性能较好。

而 Form-data 由于需要处理复杂的编码和分隔,可能在发送大量小型数据时效率稍低,但这种差异在现代网络技术下通常是可以忽略的。

选择 JSON 还是 Form-data,很大程度上取决于你的具体需求:

  • 如果你需要传送简单或结构化的数据给服务器,而不涉及文件上传,那么 JSON 可能是更优的选择。
  • 如果你的场景中需要上传文件,尤其是在 Web 表单中,Form-data 则无疑更为合适。
  • 对于需要同时处理文件和数据的情况,Form-data 提供了一套完善的解决方案。

,Form-data 展现出了其独特优势。

  • 传统 Web 表单:许多基于 HTML 表单的传统 Web 应用倾向于使用 Form-data 方式提交数据,因为这种方式不需要额外的 JavaScript 代码即可直接与表单元素交互。

性能考量

在讨论 JSON 与 Form-data 之间的优劣时,性能因素经常被提及。一般来说,JSON 因为其纯文本特性,在处理简单数据结构时性能较好。

而 Form-data 由于需要处理复杂的编码和分隔,可能在发送大量小型数据时效率稍低,但这种差异在现代网络技术下通常是可以忽略的。

选择 JSON 还是 Form-data,很大程度上取决于你的具体需求:

  • 如果你需要传送简单或结构化的数据给服务器,而不涉及文件上传,那么 JSON 可能是更优的选择。
  • 如果你的场景中需要上传文件,尤其是在 Web 表单中,Form-data 则无疑更为合适。
  • 对于需要同时处理文件和数据的情况,Form-data 提供了一套完善的解决方案。

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

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

相关文章

SpringBoot基础(一):快速入门

SpringBoot基础系列文章 SpringBoot基础(一)&#xff1a;快速入门 目录 一、SpringBoot简介二、快速入门三、SpringBoot核心组件1、parent1.1、spring-boot-starter-parent1.2、spring-boot-dependencies 2、starter2.1、spring-boot-starter-web2.2、spring-boot-starter2.3、…

Visual Studio 和 Visual Studio Code 的比较与应用偏向

Visual Studio 和 Visual Studio Code&#xff08;VS Code&#xff09;是微软开发的两个不同的开发工具&#xff0c;各有特点和优势&#xff0c;适用于不同的开发需求。下面是详细的比较和在实际应用中的偏向。 功能和特性 Visual Studio 完整的IDE&#xff1a;支持多种编程…

海外短剧小程序 ,竖屏会员付费看剧系统搭建paypal,stripe对接支付功能

目录 前言&#xff1a; 一、系统功能 二、系统常见问题 总结&#xff1a; 前言&#xff1a; 在全球化的今天&#xff0c;短剧作为一种新兴的内容形式&#xff0c;正迅速赢得国际观众的心。尤其是海外市场的短剧推广&#xff0c;正成为内容创作者和营销者的新宠。本文将深入…

Adobe Substance 3D Sampler v4.2.2.3719 解锁版下载及安装教程(3D材质管理软件)

前言 Substance 3D Sampler简称“Sa”是一款由Adobe新推出的3D真实材质贴图制作软件。允许用户通过调整和混合现有材料&#xff0c;或通过扫描&#xff08;单个或多个图像&#xff09;中提取新材料来创建和迭代材料集合&#xff0c;从而轻松将真实的图片转换为具有真实感的表面…

JavaEE从入门到起飞 (三) ~AOP

晚上好&#xff0c;愿这深深的夜色给你带来安宁&#xff0c;让温馨的夜晚抚平你一天的疲惫&#xff0c;美好的梦想在这个寂静的夜晚悄悄成长。 目录 文章目录 前言 了解面向切面编程&#xff08;AOP&#xff09; 什么是面向切面编程&#xff08;AOP&#xff09;&#xff1f…

二、Matlab图像处理基础

文章目录 一、Matlab图像处理工具箱二、图像文件的读取2.1 文件信息的读取2.2 图像文件的读取2.3 图像文件的保存2.4 图像文件的显示2.5 像素信息的显示 本章知识点总结 一、Matlab图像处理工具箱 在帮助文档可以搜索到图像处理工具箱的介绍 二、图像文件的读取 2.1 文件信息…

回归评价指标

这里写目录标题 1. 均方误差MSE2. 均方根误差RMSE3. 平均绝对误差MAE4. R^2^5. 调整后R^2^ 1. 均方误差MSE 回归数据和原始数据误差的平方和/原始数据个数平方的原因&#xff1a;不平方正负误差会抵消&#xff0c;对大误差更为敏感&#xff0c;在一些场景下更能凸显出模型预测…

41.【C语言之外】聊聊Cheat Engine官方教程步骤6的思考

0.看前须知 有一定指针概念的基础 推荐阅读前几篇博文&#xff1a; 19.【C语言】指针&#xff08;重难点&#xff09;&#xff08;A&#xff09; 37.【C语言】指针&#xff08;重难点&#xff09;&#xff08;B&#xff09; 38.【C语言】指针&#xff08;重难点&#xff09…

【python】模块包

前言 模块化是python中的重要知识。随着我们接触的工程项目变得越来越大时&#xff0c;就需要把我们的运行代码进行拆解以便我们检查和项目的推进。有些时候&#xff0c;几个程序都需要同一个功能&#xff0c;那python就提供一种方法&#xff0c;把需要重复利用的代码放在同一…

Spring Boot 3.x Web MVC实战:实现流缓存的request

上一节《Spring Boot 3.x Filter实战&#xff1a;记录请求日志》实践最后遇到了request对象的流不可重复读的问题&#xff0c;本小节我们将通过流数据缓存以及流的装饰器模式来解决这个问题。如果觉得对你有帮助&#xff0c;记得点赞收藏&#xff0c;关注小卷&#xff0c;后续更…

Linux部署MySQL8.0

目录 一、部署前准备1.1、查看系统版本和位数&#xff08;32位或64位&#xff09;1.2、下载对应安装包 二、开始部署1、将安装包解压并且移动到目标安装目录2、准备MySQL数据和日志等存储文件夹3、准备MySQL配置文件 my.cnf4、创建mysql单独用户组和用户&#xff0c;将安装目录…

<数据集>灭火器识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3262张 标注数量(xml文件个数)&#xff1a;3262 标注数量(txt文件个数)&#xff1a;3262 标注类别数&#xff1a;1 标注类别名称&#xff1a;[extinguisher] 使用标注工具&#xff1a;labelImg 标注规则&#xf…

无人机培训机构推广运营理论技术

一、市场定位与品牌建设 在无人机培训行业的激烈竞争中&#xff0c;精准的市场定位是成功的第一步。首先&#xff0c;需明确目标学员群体&#xff0c;如航拍爱好者、农业植保服务者、应急救援人员或专业无人机操作员等。基于目标群体的需求&#xff0c;构建差异化的品牌形象。…

FlexBV电路查看软件

FlexBV - Macbook, iPhone, PC/Laptop & Electronics BoardViewer with PDF Cross Referencing 免费。 支持tvw&#xff0c;cad格式。 支持Windows,Linux,Mac。 而且我发现cad格式是文本的&#xff01;意味着可以自由编辑&#xff01;

git拉取代码出现“remote: The project you were looking for could not be found.”错误分析

git拉取代码出现“remote: The project you were looking for could not be found.”错误分析 如果输入的远程地址正确&#xff0c;那么极大可能是用户未登录或多个用户登录无法正确获取你想要的用户&#xff0c;如下图所示&#xff0c; 由于之前有同事在我电脑登录git账号&a…

leetcode 103.二叉树的锯齿形层序遍历

1.题目要求: 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。2.做题思路:由题我们可以判断&#xff0c;树中每到偶数…

spring过滤器和拦截器的区别

1出身不同。 过滤器来自servlet&#xff0c;拦截器来自spring框架。 2触发时机 不同请求的执行顺序是&#xff1a;请求进入容器 > 进入过滤器 > 进入 Servlet > 进入拦截器 > 执行控制器 过滤器先执行&#xff0c;会在servlet请求之前和相应之后进行处理。 拦…

写一个Vue2和vue3的自定义指令(以复制指定作为示例)

文章目录 一、自定义指令是什么&#xff1f;二、自定义指令有啥用&#xff1f;三、自定义指令怎么用&#xff1f;1.自定义指令的参数2.自定义指令的钩子函数&#xff08;1&#xff09;五个钩子函数的说明&#xff08;2&#xff09;钩子函数的参数(主要参数&#xff1a;el和valu…

【活动预告】研讨会+开源集市,IoTDB “登录” GOTC 2024!

由开源中国与上海浦东软件园联合举办的 GOTC 2024 即将开幕&#xff01;本次大会结合 “GOTC&#xff08;全球开源技术峰会&#xff09;” 与 “GOGC&#xff08;全球开源极客嘉年华&#xff09;”&#xff0c;将集结全球范围内对开源技术充满热情的开发者、社区成员、创业者、…

Oracle是如何保证数据不丢的

上一篇文章给大家梳理了一条更新语句在Oracle数据库中是如何执行的&#xff0c;我们也提到只要更新记录成功写入到在线重做日志文件&#xff0c;Oracle就能保证数据不会丢失。同时也向大家解释了&#xff0c;其实这个时候数据并没有写入到数据文件&#xff0c;因此这个时候仍然…