Spring Web MVC快速入门

什么是Spring Web MVC

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"Spring MVC".

  1. View(视图) 指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源.
  2. Model(模型) 是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分.
  3. Controller(控制器)可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型

学习Spring MVC

主要分以下三个⽅⾯:

1. 建⽴连接:将⽤⼾(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的

Spring 程序。

2. 请求: ⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数, 所以请求这块主要是 获取参数的功能.

3. 响应: 执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤⼾, 也就是响应.

开始运用

当我们在进行交互的时候,我们需要使用注解。

1、@RestController

实现用户通过浏览器和程序的交互

2、@RequestMapping

@RequestMapping 是 Spring Web MVC 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的

路由映射的。

@RequestMapping 既⽀持Get请求, ⼜⽀持Post请求. 同理, 也⽀持其他的请求⽅式

我们测试后端⽅法时, 还需要去写前端代码,所以我们可以第三方工具:Apifox。

下载地址:

Apifox - API 文档、调试、Mock、测试一体化协作平台。拥有接口文档管理、接口调试、Mock、自动化测试等功能,接口开发、测试、联调效率,提升 10 倍。最好用的接口文档管理工具,接口自动化测试工具。

传递单个参数

我们可以使用apifox进行查询

传递多个参数

当有多个参数的时候,我们可以创建一个对象

上图包含set和get方法,也需要重新toString

如果我们什么都不传的话,就会默认初始化值

下面为我们自己填入的值

重命名

后端和前端在开发中,命名的想法不同,这时候我们就需要使用重命名

@RequestParam("name") String username 为重命名方式

这样我们就可以在想法不同的情况下,很容易就更改代码

传递数组

这里的数组,我们打印的时候要使用Arrays.toString()

传递集合

当我们使用list时,我们需要加一个注解 

@RequestParam(required = false) List<String> list

传递json数据

json是一个特殊的字符串,可以表示对象的字符串

我们传递json需要注解 @RequestBody Student student

从路径中获取参数

我们需要使用的注解  @PathVariable

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

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

相关文章

DeepSeek基于注意力模型的可控图像生成

DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 图像的加噪与模型训练 在扩散模型的训练过程中&#xff0c;首先需要对输入的信号进行加噪处理&#xff0c;经典的加噪过程是在图像进行向量化处理后在其中添加正态分布&#xff0c;而正态分布的值也是与时间…

第十六届蓝桥杯B组第二题

当时在考场的时候这一道题目 无论我是使用JAVA的大数&#xff08;BIGTHGER&#xff09;还是赛后 使用PY 都是没有运行出来 今天也是突发奇想在B站上面搜一搜 看了才知道这也是需要一定的数学思维 通过转换 设X来把运算式精简化 避免运行超时 下面则是代码 public class lanba…

HT71663同步升压2.7V-13V输入10A聚能芯半导体禾润一级代理

在便携式设备飞速发展的今天&#xff0c;电源转换效率与产品尺寸始终是行业难以平衡的难题。但现在&#xff0c;HT71663 高功率全集成升压转换器强势登场&#xff0c;一举打破僵局&#xff0c;为便携式系统带来颠覆性的高效小尺寸解决方案&#xff01;​ HT71663 的卓越性能&am…

Unity:输入系统(Input System)与持续检测键盘按键(Input.GetKey)

目录 Unity 的两套输入系统&#xff1a; &#x1f50d; Input.GetKey 详解 &#x1f3af; 对比&#xff1a;常用的输入检测方法 技术底层原理&#xff08;简化版&#xff09; 示例&#xff1a;角色移动 为什么会被“新输入系统”替代&#xff1f; Unity 的两套输入系统&…

港大今年开源了哪些SLAM算法?

过去的5个月&#xff0c;香港大学 MaRS 实验室陆续开源了四套面向无人机的在线 SLAM 框架&#xff1a;**FAST-LIVO2 、Point-LIO&#xff08;grid-map 分支&#xff09; 、Voxel-SLAM 、Swarm-LIO2 **。这四套框架覆盖了单机三传感器融合、高带宽高速机动、长时间多级地图优化以…

【质量管理】TRIZ因果链分析:解码质量问题的“多米诺效应“

为什么要使用因果链分析 没有发现问题并不等于没有问题。爱因斯坦曾说&#xff0c;如果我只有一个小时的时间来拯救世界&#xff0c;我将花45分钟时间分析问题&#xff0c;10分钟的时间来检查问题&#xff0c;最后5分钟的时间来解决问题。可见问题分析的重要性。 在质量管理实践…

线程中常用的方法

知识点详细说明 Java线程的核心方法集中在Thread类和Object类中,以下是新增整合后的常用方法分类解析: 1. 线程生命周期控制 方法作用注意事项start()启动新线程,JVM调用run()方法多次调用会抛出IllegalThreadStateException(线程状态不可逆)。run()线程的任务逻辑直接调…

c++:迭代器(Iterator)

目录 &#x1f6aa;什么是迭代器&#xff1f; &#x1f527; 迭代器的本质 为什么不用普通数组或下标&#xff1f; STL容器的迭代器并不是共用一个类型&#xff01; 迭代器的类型&#xff08;Iterator Categories&#xff09; &#x1f4e6; 常见容器的迭代器类型 ✅ 迭…

【文件系统—散列结构文件】

文章目录 一、实验目的实验内容设计思路 三、实验代码实现四、总结 一、实验目的 理解linux文件系统的内部技术&#xff0c;掌握linux与文件有关的系统调用命令&#xff0c;并在此基础上建立面向随机检索的散列结构文件&#xff1b;## 二、实验内容与设计思想 实验内容 1.设…

力扣26——删除有序数组中的重复项

目录 1.题目描述&#xff1a; 2.算法分析&#xff1a; 3.代码展示&#xff1a; 1.题目描述&#xff1a; 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对…

ggplot2 | GO barplot with gene list

1. 效果图 2. 代码 数据是GO的输出结果&#xff0c;本文使用的是 metascape 输出的excel挑选的若干行。 # 1. 读取数据 datread.csv("E:\\research\\scPolyA-seq2\\GO-APA-Timepoint\\test.csv", sep"\t") head(dat)# 2. 选择所需要的列 dat.usedat[, c(…

学习搭子,秘塔AI搜索

什么是秘塔AI搜索 《秘塔AI搜索》的网址&#xff1a;https://metaso.cn/ 功能&#xff1a;AI搜索和知识学习&#xff0c;其中学习部分是亮点&#xff0c;也是主要推荐理由。对应的入口&#xff1a;https://metaso.cn/study 推荐理由 界面细节做工精良《今天学点啥》板块的知…

【C语言】--指针超详解(三)

目录 一.数组名的理解 二.使用指针访问数组 三.一维数组传参的本质 四.冒泡排序 五.二级指针 六.指针数组 6.1--指针数组的定义 6.2--指针数组模拟二维数组 &#x1f525;个人主页&#xff1a;草莓熊Lotso的个人主页 &#x1f3ac;作者简介&#xff1a;C方向学习者 &…

Linux防火墙

1.防火墙是一种位于内部网络与外部网络之间的网络安全系统&#xff0c;它依照特定的规则&#xff0c;允许或限制传输的数据通过&#xff0c;以保护内部网络的安全。以下从功能、分类、工作原理等方面为你详细讲解&#xff1a; 功能访问控制&#xff1a;这是防火墙最主要的功能。…

嵌入式培训之C语言学习完(十七)结构体、共用体、枚举、typedef关键字与位运算

目录 一、结构体&#xff08;struct关键字&#xff09; &#xff08;一&#xff09;声明一个结构体数据类型 &#xff08;二&#xff09;结构体的成员初始化与赋值 a、结构体变量赋值 b、结构体成员初始化 c、结构体的定义形式 &#xff08;三&#xff09;考点&#xff…

Python字典:数据操作的核心容器

在Python编程生态中&#xff0c;字典&#xff08;dict&#xff09;是最常用且功能强大的内置数据结构之一。它以键值对&#xff08;Key-Value Pair&#xff09;的形式存储数据&#xff0c;为快速查找、灵活映射关系提供了天然支持。无论是数据清洗、算法实现还是Web开发&#x…

按位宽提取十六进制值

需求&#xff1a;给出一个十六进制值&#xff0c;要求提取high和low位之间的值。比如16ha0f0&#xff0c;这是一个16bit宽的十六进制数0xa0f0&#xff0c;提取[15:12]范围内的值。 def extract_bits(value, high, low):"""从 value 中提取 [high:low] 位的值:p…

LeRobot 项目部署运行逻辑(六)——visualize_dataset_html.py/visualize_dataset.py

可视化脚本包括了两个方法&#xff1a;远程下载 huggingface 上的数据集和使用本地数据集 脚本主要使用两个&#xff1a; 目前来说&#xff0c;ACT 采集训练用的是统一时间长度的数据集&#xff0c;此外&#xff0c;这两个脚本最大的问题在于不能裁剪&#xff0c;这也是比较好…

SSTI模版注入

1、概念 SSTI是一种常见的Web安全漏洞&#xff0c;它允许攻击者通过注入恶意模板代码&#xff0c;使服务器在渲染模板时执行非预期的操作。 &#xff08;1&#xff09;渲染模版 至于什么是渲染模版&#xff1a;服务器端渲染模板是一种Web开发技术&#xff0c;它允许在服务器端…

关于点胶机的精度

一、精度&#xff1a; 1:X/y轴定位精度常通在5个丝左右&#xff0c;Z轴在3个丝左右&#xff0c; 如果采用伺服电机丝杆配置&#xff0c;可提升至于个2丝左右。 2&#xff1a;胶水控制精度&#xff1a;通过喷阀驱动器&#xff0c;气压等参数&#xff0c;实现胶量控制&#xf…