Spring MVC 的常用注解

@RequestMapping 和 @RestController注解


上面两个注解,是Spring MCV最常用的注解。

@RequestMapping , 他是用来注册接口的路由映射。

路由映射:当一个用户访问url时,将用户的请求对应到某个方法或类的过程叫做路由映射。

@RequestMapping 注解的使用:它既可以又是类,也可以修饰方法,访问的地址是类的路径和方法路径。


但是在这里我们只通过@RequestMapping 是不足以访问网页的,还要通过@RestController注解。

@RestController,他包括了@Controller注解和@ResponseController注解。

@Controller注解返回的是视图 , @ResponseController返回的是各种格式的数据。


在这里我写简单的项目,来掩饰一下,怎么使用的。

如代码:

package com.example.springbootdemo1;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RequestMapping("/hello")
@RestController
public class HelloController {@RequestMapping("/u1")public String sayHi(){return "hello,Spring 111";}@RequestMapping("/u2")public String hello(){return "Hello Spring MVC";}}

我们访问我们哪个输入就访问就行了,根据url的不同,直接访问。

如图访问结果:


@RequestParam注解


使用@RequestParam注解可以对后端的参数重命名,其实就是可以把前端的参数映射到后端来,进而可以对后端的参数,改成自己想要的。


这里写了一个计算器功能的网页,结合前端代码来看一下

如前端后端代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="calc/sum" method="post"><h1>计算器</h1>数字1:<input name="sum1" type="text"><br>数字2:<input name="sum2" type="text"><br><input type="submit" value=" 点击相加 ">
</form>
</body>
</html>
package com.example.springbootdemo1;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RequestMapping("/calc")
@RestController
public class CalcController {@RequestMapping("/sum")public String sum(@RequestParam(value = "sum1" , required = false) Integer array , Integer sum2){Integer sum = array + sum2;System.out.println(sum);return "计算结果:" + sum;}
}

我们可以发现,sum1这个参数,我们改成了array,注解里的false表示这里不是必传的参数,默认为true。

如执行结果:

可以看到代码执行没有错误。


@RequestBodoy注解


在日常的开发中,@RequestBody注解主要就是用来传递JOSN格式的数据。

如代码:

@RestController  
@RequestMapping("/users")  
public class UserController {  @PostMapping("/create")  public ResponseEntity<User> createUser(@RequestBody User user) {  // 在这里可以使用user对象的属性进行相应的业务逻辑处理  // 例如保存用户信息到数据库  return ResponseEntity.ok(userService.save(user));  }  
}

上面是最常用的注解,下面简单介绍几个,用的还行的。

@PathVariable,这个注解和字面的意思一样,绑定请求url的地址。

如代码:

@RequestMapping("/m8/{id}/{name}")
public String method8(@PathVariable Integer id, @PathVariable("name") String 
userName){return "解析参数id:"+id+",name:"+userName;
}

@GetMapping和PostMapping:这两个注解,和我们看到的一样,直接确定了请求的类型,是get还是post。这里就不展示代码了,例在方法上直接写就行。

@RequestPart:用于上传文件。

如代码:

public String getfile(@RequestPart("file") MultipartFile file) throwsIOException {//获取⽂件名称String fileName = file.getOriginalFilename();//⽂件上传到指定路径file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));
return "接收到⽂件名称为: "+fileName;
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】将IDEA项目部署到云服务器上,让其成为后台进程(保姆级教学,满满的干货~~)

目录 部署项目到云服务器什么是部署一、 创建MySQL数据库二、 修改idea配置项三、 数据打包四、 部署云服务器五、开放端口号六 、 验证程序 部署项目到云服务器 什么是部署 ⼯作中涉及到的"环境" 开发环境:开发⼈员写代码⽤的机器.测试环境:测试⼈员测试程序使⽤…

【HarmonyOS】HarmonyOS NEXT学习日记:二、ArkTs语法

【HarmonyOS】HarmonyOS NEXT学习日记&#xff1a;二、ArkTs语法 众所周知TS是JS的超集,而ArkTs则可以理解为是Ts的超集。他们的基础都基于JS&#xff0c;所以学习之前最好就JS基础。我的学习重点也是放在ArkTs和JS的不同点上。 文章主要跟着官方文档学习&#xff0c;跳过了一…

21天学通C++:第十三、十四章节

第十三章&#xff1a;类型转换运算符 类型转换是一种机制&#xff0c;让程序员能够暂时或永久性改变编译器对对象的解释。注意&#xff0c;这并不意味着程序员改变了对象本身&#xff0c;而只是改变了对对象的解释。可改变对象解释方式的运算符称为类型转换运算符。 为何需要…

追溯源码观察HashMap底层原理

引言&#xff08;Map的重要性&#xff09; 从事Java的小伙伴&#xff0c;在面试的时候几乎都会被问到Map&#xff0c;Map都被盘包浆了。Map是键值集合&#xff0c;使用的场景有很多比如缓存、数据索引、数据去重等场景&#xff0c;在算法中也经常出现&#xff0c;因为在Map中获…

论文《Revisiting Heterophily For Graph Neural Networks》笔记

【ACM】作者从聚合后节点相似性的角度重新审视异配性&#xff0c;并定义了新的同质性度量方法。基于聚合相似度度量这一指标&#xff0c;作者提出了一种新的框架&#xff0c;称为自适应信道混合&#xff08;Adaptive Channel Mixing&#xff0c;ACM&#xff09;&#xff0c;它通…

【青书学堂】2024年第一学期 生产与运作管理(高起专) 作业

【青书学堂】2024年第一学期 生产与运作管理(高起专) 作业 为了方便日后复习&#xff0c;青书学堂成人大专试题整理。 若有未整理的课程&#xff0c;请私信我补充&#xff0c;欢迎爱学习的同学们收藏点赞关注&#xff01;文章内容仅限学习使用&#xff01;&#xff01;&#xf…

Linux的前台进程和后台进程(守护进程)

前台进程 前台进程就是在某个终端中运行的进程&#xff0c;在该终端中通过运行命令运行起该进程&#xff0c;一旦该终端关闭&#xff0c;进程也就随之消失。 后台进程 后台进程顾名思义就是在后台运行的进程&#xff0c;与前台进程不同的是&#xff0c;它不受某一个终端控制…

VBA学习(21):遍历文件夹(和子文件夹)中的文件

很多时候&#xff0c;我们都想要遍历文件夹中的每个文件&#xff0c;例如在工作表中列出所有文件名、对每个文件进行修改。VBA给我们提供了一些方式&#xff1a;&#xff08;1&#xff09;Dir函数&#xff1b;&#xff08;2&#xff09;File System Object。 使用Dir函数 Dir…

国内新能源汽车芯片自给,承认差距,任重道远

【科技明说 &#xff5c; 科技热点关注】 据近日工信部电子五所元器件与材料研究院高级副院长罗道军表示&#xff0c;中国拥有最大的新能源车产能&#xff0c;芯片用量也是越来越多。但是芯片的自给率目前不到10%&#xff0c;是结构性的短缺。 中国拥有最大新能源车产能&#…

超详细信息收集篇

1 域名信息收集 1.1 域名是什么 域名&#xff08;英语&#xff1a;Domain Name&#xff09;&#xff0c;又称网域&#xff0c;是由一串用点分隔的名字组成的 Internet 上某一台 计算机 或计算机组的名称&#xff0c;用于在数据传输时对计算机的定位标识&#xff08;有时也指地…

STM32(六):STM32指南者-定时器实验

目录 一、基本概念1、常规定时器2、内核定时器 二、基本定时器实验1、实验说明2、编程过程&#xff08;1&#xff09;配置LED&#xff08;2&#xff09;配置定时器&#xff08;3&#xff09;设定中断事件&#xff08;4&#xff09;主函数计数 3、工程代码 三、通用定时器实验实…

开放式蓝牙耳机哪个牌子实惠又好用?五款黑马产品任你选

近几年兴起的开放式蓝牙耳机&#xff0c;具有佩戴舒适稳固、不影响使用者判断外界环境等优点&#xff0c;十分适合在户外环境下使用&#xff0c;因此受到了众多健身人士的喜爱。那么该如何挑选到一款适合自己的开放式耳机呢&#xff1f;开放式蓝牙耳机哪个牌子实惠又好用&#…

2024计算机毕设选题技巧|论文写作指南|更多成品项目

&#x1f4bb; 芋圆带你做毕设&#xff1a;你的毕设好帮手 &#x1f44b; 博主介绍&#xff1a; 我是芋圆&#xff0c;全网粉丝20W&#xff0c;CSDN计算机领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云等平台优质作者。大学期间&#xff0c;我不仅协助指导老师进行毕…

对LinkedList ,单链表和双链表的理解

一.ArrayList的缺陷 二.链表 三.链表部分相关oj面试题 四.LinkedList的模拟实现 五.LinkedList的使用 六.ArrayList和LinkedList的区别 一.ArrayList的缺陷: 1. ArrayList底层使用 数组 来存储元素&#xff0c;如果不熟悉可以来再看看&#xff1a; ArrayList与顺序表-CSDN…

12.C++模板进阶 | 代码膨胀

目录 0.引入 函数模板 类模板 1. 非类型模板参数 运用 array 2. 函数模板的特化 2.1 概念 2.2 类模板的特化 全特化 偏特化 3. 模板不可以分离编译 回顾类和对象 3.1 什么是分离编译 3.2 模板的分离编译 4. 模板总结 代码膨胀 代码膨胀的影响&#xff1a; 代…

STM32 BootLoader 刷新项目 (五) 获取软件版本号-命令0x51

STM32 BootLoader 刷新项目 (五) 获取软件版本号-命令0x51 下面我们来讲解第一个指令&#xff0c;获取软件版本号命令-0x51. 在BootLoader中获取软件版本号的操作有多个重要的作用&#xff0c;具体如下&#xff1a; 版本管理&#xff1a; 识别当前版本&#xff1a;通过获取软…

AI+折叠屏,荣耀的创新周期论

文&#xff5c;刘俊宏 编&#xff5c;王一粟 2024年&#xff0c;AI和折叠屏的演进路线&#xff0c;已经成为了手机行业的共识。 首先&#xff0c;手机市场的新增量已经被折叠屏所接管。据Counterpoint Research数据显示&#xff0c;中国2024年第一季度折叠屏手机销量同比增长…

BUUCTF逆向wp [HDCTF2019]Maze

第一步 查壳&#xff0c;本题是32位&#xff0c;有壳&#xff0c;进行脱壳。 第二步 这里的 jnz 指令会实现一个跳转&#xff0c;并且下面的0EC85D78Bh被标红了&#xff0c;应该是一个不存在的地址&#xff0c;这些东西就会导致IDA无法正常反汇编出原始代码&#xff0c;也称…

【系统架构设计】数据库系统(一)

数据库系统&#xff08;一&#xff09; 数据库模式与范式数据库的结构与模式数据模型关系代数数据的规范化反规范化 数据库设计事务管理备份与恢复分布式数据库系统数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库的结构与模式 数据库技术中采用分级的方法将数据库的结…

萝卜快跑无人出租车是有人远程代驾? 客服:没有人操控

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 近期“萝卜快跑”无人驾驶网约车相关话题引发网友热议。 有网传图片显示&#xff0c;萝卜快跑机器人智控中心&#xff0c;有真人坐在带有方向盘的屏幕前&#xff1b; 有网友认为所谓的无人网约车&am…