springmvc中Restful风格案例

文章目录

    • 8、RESTFul案例
      • 8.1、准备工作

8、RESTFul案例

8.1、准备工作

对员工表(模拟表数据)的员工信息进行增删改查

搭建环境

准备实体类

public class Employee {private  Integer id;//主键private String lastName;//姓名private String email;//邮箱private Integer sex;//性别,1male,0femalepublic Employee() {}public Employee(Integer id, String lastName, String email, Integer sex) {this.id = id;this.lastName = lastName;this.email = email;this.sex = sex;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex = sex;}@Overridepublic String toString() {return "Employee{" +"id=" + id +", lastName='" + lastName + '\'' +", email='" + email + '\'' +", sex=" + sex +'}';}
}

准备dao模拟数据

import com.qcby.pojo.Employee;
import org.springframework.stereotype.Repository;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;/*** @Author che* @Date 2024/6/9 19:19* Description:TODO* Version 1.0*/
@Repository
public class EmployeeDao {private static Map<Integer, Employee> employees = null;static {employees = new HashMap<Integer,Employee>();employees.put(1001,new Employee(1001,"E-AA","aa@qq.com",1));employees.put(1002,new Employee(1002,"E-AA","aa@qq.com",1));employees.put(1003,new Employee(1003,"E-AA","aa@qq.com",0));employees.put(1004,new Employee(1004,"E-AA","aa@qq.com",0));employees.put(1005,new Employee(1005,"E-AA","aa@qq.com",1));}private  static  Integer initId = 1006;/*** 模拟添加操作* @param employee*/public void save(Employee employee){if(employee.getId() == null){employee.setId(initId++);}employees.put(employee.getId(),employee);}/*** 删除* @param id*/public void delete(Integer id){employees.remove(id);}/*** 修改* @param id* @return*/public Employee get(Integer id){return employees.get(id);}/*** 查找* @return*/public Collection<Employee> getAll(){return employees.values();}}

8.2功能清单

功能URL 地址请求方式
访问首页√/GET
查询全部数据√/employeeGET
删除√/employee/2DELETE
跳转到添加数据页面√/toAddGET
执行保存√/employeePOST
跳转到更新数据页面√/employee/2GET
执行更新√/employeePUT

index.html

8.3、访问首页

SpringMVC.xml

<mvc:view-controller path="/" view-name="index"></mvc:view-controller>

创建index页面

<a th:href="@{/employee}">查询所有的员工信息</a><br>

控制器

@Autowired
private EmployeeDao employeeDao;//@RequestMapping(value = "/employee",method = RequestMethod.GET)
@GetMapping("/employee")
public String getAllEmployee(Model model) {//获取所有的员工信息Collection<Employee> allEmployee = employeeDao.getAll();//将所有的员工信息在请求域中共享model.addAttribute("allEmployee",allEmployee);//返回到员工列表页面return "employee_list";
}
//@RequestMapping(value = "/employee/{id}",method = RequestMethod.DELETE)
@DeleteMapping("/employee/{id}")
public String deleteEmploee(@PathVariable Integer id) {//删除员工信息employeeDao.delete(id);return "redirect:/employee";
}

⑴创建处理删除delete请求方式的表单

<!-- 作用:通过超链接控制表单的提交,将post请求转换为delete请求 -->
<form  method="post"><!-- HiddenHttpMethodFilter要求:必须传输_method请求参数,并且值为最终的请求方式 --><input type="hidden" name="_method" value="delete">
</form>

⑵删除超链接绑定点击事件

<a @click="deleteEmployee()" th:href="@{'/employee/'+${employee.id}}">delete</a>

<script type="text/javascript" th:src="@{/static/js/vue.js}"></script>
<script type="text/javascript">var vue = new Vue({el:"#app",methods:{deleteEmployee(){//获取form表单var form = document.getElementsByTagName("form")[0];//将超链接的href属性赋值给form表单的action属性//event.target表示当前触发事件的标签form.action =event.target.href;//表单提交form.submit();//阻止超链接的默认行为event.preventDefault();}}});

8.4调整到添加数据页面

功能URL 地址请求方式
访问首页√/GET
查询全部数据√/employeeGET
删除√/employee/2DELETE
跳转到添加数据页面√/to/addGET
执行保存√/employeePOST
跳转到更新数据页面√/employee/2GET
访问首页√/GET
查询全部数据√/employeeGET
删除√/employee/2DELETE
跳转到添加数据页面√/to/addGET
执行保存√/employeePOST
跳转到更新数据页面√/employee/2GET
执行更新√/employeePUT

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

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

相关文章

Vite和Vue3:Vite是一种新的开发服务器和构建工具,它利用了现代浏览器支持的原生ES模块导入,为开发者提供了极速的冷启动和即时热更新

I. Vite 的概述 Vite的定义和功能 Vite 是一个由 Vue.js 的作者开发的现代前端构建工具,目标是提供一种尽可能快的现代开发体验。"Vite" 在法语中意思是 "快",这也正是其设计的目标之一。 Vite 的功能主要包括: 开发服务器:使用原生的 ES module…

Stable Diffusion 插件安装与推荐,助力你的AI绘图

在上一篇文章我们安装了Stable Diffusion &#xff0c;这篇文章我们来安装Stable Diffusion的插件 Stable Diffusion的插件是绘画中重要的一环&#xff0c;好的插件可以让你的绘画更加得心应手 中英双语插件 为什么要安装中英双语插件呢&#xff0c;不能只安装中文插件吗&…

安卓应用开发学习:获取导航卫星信息

一、引言 我昨天写了《安卓应用开发学习&#xff1a;获取经纬度及地理位置描述信息》日志&#xff0c;今天再接再厉&#xff0c;记录一下跟着《Android App 开发进阶与项目实战》一书&#xff0c;实现获取导航卫星信息&#xff0c;并在手机上显示的功能的情况。先上实现后的在…

Redis的持久化方式和注意点

redis持久篇 两种持久化技术&#xff1a; AOF日志和RDB快照 Redis默认会开启RBD快照 AOF:持久化只会记录写操作命令。 是一种日志&#xff0c;写入到文件&#xff0c;有相应的格式文本 就是 Redis 里的AOF(Append Only File)持久化功能&#xff0c;注意只会记录写操作命令…

决定马萨诸塞州版图的关键历史事件

决定马萨诸塞州版图的关键历史事件&#xff1a; 1. 早期探索与*民定居&#xff1a;17世纪初&#xff0c;英国清教徒为寻求宗教自由&#xff0c;乘坐“五月花号”到达新大陆&#xff0c;并于1620年在现在的普利茅斯建立了第一个永久性英国*民地。随后&#xff0c;更多的英国*民…

LKD-Net: Large Kernel Convolution Network for Single Image Dehazing

LKD-Net&#xff1a;用于单幅图像去噪的大型核卷积网络 摘要 基于深度卷积神经网络(CNN)的单幅图像去噪方法已经取得了很大的成功。以往的方法致力于通过增加网络的深度和宽度来提高网络的性能。目前的方法侧重于增加卷积核的大小&#xff0c;以受益于更大的接受野来增强其性能…

昇思25天学习打卡营第1天|新手上路

这里写自定义目录标题 打卡昇思MindSpore扫盲快速入门 打卡 昇思MindSpore扫盲 第一节基本是一个mindspore的科普扫盲。大概介绍一通mindspore的一些架构&#xff0c;feature&#xff0c;以及其对比于其他同类框架的优势。简单扫读了一遍大概有点印象直接跳过。 快速入门 这…

Vue 3 中处理文件上传和响应式更新

Vue 3 中处理文件上传和响应式更新 一、前言1.创建文件上传组件2.解释代码3.在主应用中使用文件上传组件4.总结 一、前言 在现代 web 开发中&#xff0c;文件上传是一个常见需求。本文将详细介绍如何在 Vue 3 中处理文件上传&#xff0c;并确保上传后的文件列表能够响应式更新…

Linux内核编译流程

删除之前编译生成的文件和配置文件 make mrproper生成.config文件 make menuconfig编译 make -j41. No rule to make target ‘debian/canonical-certs.pem‘, needed by ‘certs/x509_certificate_list‘ vim .config 修改CONFIG_SYSTEM_TRUSTED_KEYS为"" 修改C…

理解异步复位,同步释放 ?

在数字电路设计中&#xff0c;复位信号用于初始化系统&#xff0c;使其进入一个已知的状态。复位信号可以是异步的&#xff0c;即不依赖于时钟信号&#xff0c;这种设计方法称为异步复位。然而&#xff0c;为了确保系统在复位解除后能够正确同步和稳定工作&#xff0c;常采用同…

如何把图片转换成pdf格式?图片转PDF方法分享

如何把图片转换成pdf格式&#xff1f;图片转换为PDF格式的重要性不言而喻。PDF文件不仅能够在各种操作系统和设备上保持一致的显示效果&#xff0c;还能确保图片内容的清晰度和质量不受损害。此外&#xff0c;PDF格式支持加密和权限设置&#xff0c;可以保护图片内容不被轻易篡…

FireFox 编译指南2024 Windows10篇-环境准备(一)

1. 引言 在开源浏览器项目中&#xff0c;Firefox因其高性能和灵活性而备受开发者青睐。为了在本地环境中编译和定制Firefox&#xff0c;开发者需要做好充分的环境准备工作。这不仅是编译成功的基础&#xff0c;也是后续调试、优化和二次开发的关键步骤。 编译Firefox是一个复…

深入剖析Tomcat(十二) 详解StandardContext

StandardContext是Context容器的一个标准实现&#xff0c;一般情况下&#xff0c;Tomcat都是使用StandardContext类来创建Context容器。前面讲过&#xff0c;Context容器代表了一个Web应用&#xff0c;Tomcat本身支持部署多个应用&#xff0c;相应的每个应用都会有一个Standard…

C语言 输入输出使用

一、getchar putchar puts #include "stdio.h" /* 跟printf的区别 1.自动加入换行符 2.printf支持多种输出&#xff0c;而puts就是输出字符串 */ int main(){char c;puts("请输入一个字符");cgetchar();puts("你输入的字符是");putchar(c);ret…

实用软件下载:ABBYY Finereader 15最新安装包及详细安装教程

数据表明FineReader PDF提供实用、简易的工具&#xff0c;将纸质文档和PDF结合起来&#xff0c;提高了数字工作场所的效率。我们都知道 即时背景识别:使不可搜索的PDF能够在工作中立即使用。值得一提的是文档转换更精准&#xff1a;OCR技术&#xff0c;它提高了PDF转换、布局保…

基于STM32的简易计算器proteus仿真设计(仿真+程序+设计报告+讲解视频)

基于STM32的简易计算器proteus仿真设计 讲解视频1.主要功能2. 仿真3. 程序4. 设计报告5. 资料清单&下载链接 基于STM32的简易计算器proteus仿真设计(仿真程序设计报告讲解视频&#xff09; 仿真图proteus 8.9 程序编译器&#xff1a;keil 5 编程语言&#xff1a;C语言 …

c语言输出文字颜色

c语言输出文字颜色 在C语言中&#xff0c;输出文字颜色主要是依赖于你的终端或者是你所使用的编译器是否支持这种操作。在Windows的命令提示符&#xff08;cmd&#xff09;中&#xff0c;可以使用ASCII控制码来改变文字颜色&#xff0c;但在Linux或Mac的终端中&#xff0c;通常…

深入JVM:详解JIT即时编译器

文章目录 深入JVM&#xff1a;详解JIT即时编译器一、序言二、基础概念1、何为JIT即时编译2、热点代码 三、HotSpot内置的即时编译器1、C1编译器2、C2编译器3、分层编译3.1 协作流程 四、常见JIT优化技术1、方法内联2、逃逸分析&#xff08;1&#xff09;同步锁消除&#xff08;…

数据结构:栈和队列详解

栈 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守先进后出LIFO&#xff08;Last In First Out&#xff09;的原则。大家可以理解为…

3-自动驾驶车辆路径规划

在自动驾驶领域&#xff0c;轨迹搜索&#xff08;Trajectory Searching&#xff09;和轨迹生成&#xff08;Trajectory Generation&#xff09;是两个密切相关但有所不同的概念&#xff0c;它们都是自动驾驶车辆规划其行驶路径的关键步骤。 轨迹搜索&#xff08;Trajectory Se…