JavaWeb中的常用的请求传参注解说明
作者:IT__learning 发布时间:2023-06-19 03:12:06
1、@RequestMapping
@RequestMapping 既可以用在类级别,也可以用在方法级别,当它定义在类级别的时候,标明该控制器所处理的请求都将被映射到这个路径下。
另外,@RequestMapping中可以使用method属性,如果指定了method属性的值,那么就只能使用指定的请求方法,如果没有指定的话,那么就可以使用HTTP的get/post方法了。
get 请求特点
a. 请求参数会添加到请求资源路径的后面,只能添加少量参数(因为请求行只有一行,大约只能存放2K左右的数据)
b. 请求参数会显示在浏览器地址栏,路由器会记录请求地址 (极为的不安全)
c. 如果传输中文,必定会乱码(原因:get 请求默认编码格式为:IIO-8859-1,后台编码格式一般为:GBK或者UTF-8)
post 请求的特点
a. 请求参数添加到请求体里面,可以添加大量的参数(也解释了为什么浏览器地址栏不能发送post请求,在地址栏里我们只能填写URL,并不能进入到 Http 包的请求体当中)
b. 相对安全,但是,post 请求不会对请求参数进行加密处理(可以使用https协议来保证数据安全)
2、@GetMapping
用于将HTTP GET请求映射到特定处理程序方法的注释。
相当于@RequestMapping(method = RequestMethod.GET)
3、@PostMapping
用于将 HTTP POST 请求映射到特定处理程序方法的注释。
相当于@RequestMapping(method = RequestMethod.POST)
4、@RequestParam
这个注解是使用在方法的形参上的,主要用途就是将请求的参数绑定到方法的形参上,有一个required属性,默认情况下是true,就是必须要传参数,如果想该形参可传可不传参数的话,就将属性值设置为false即可。
@RequestMapping("/hello")
public String hello(@RequestParam(value = "name", required = false) String name, @RequestParam(value = "age", required = true) String age) {
//age参数必须传 ,name可传可不传
...
}
5、@PathVariable
该注解主要是用于做动态绑定使用,让形参的值变成可供使用的URL变量,多用在 Restful 风格中。
@RequestMapping(value="/hello/{name}",method=RequestMethod.GET)
public String findPet(@PathVariable String name) {
//使用@PathVariable注解绑定 {name} 到String name
}
@PathVariable中的参数可以是任意的简单类型,如int、long、Date等,Spring会自动将其转换成合适的类型或者抛出TypeMismatchException异常,也可以注册支持额外的数据类型。
另外,它也支持正则表达式,这就决定了它超强的属性,它能在路径模板中使用占位符,可以设定特定的前缀匹配和后缀匹配,自定义格式等。
6、@RequestBody
该注解是指方法形参应该被绑定到HTTP请求的Body上。
@RequestMapping(value = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody User user){
//可以绑定自定义的对象类型
}
使用 @RequestBody 注解
@RequestBody 注解是用于接收请求的 Content-Type为application/json 类型的请求,数据类型是 JSON。
不使用 @RequestBody 注解
不使用 @RequestBody 注解时,可以接收 Content-Type为application/x-www-form-urlencoded 类型,或者 Text 类型的请求所提交的数据,数据格式:
aaa=111&bbb=222
1)form 表单提交以及用 Ajax 提交数据时方法所发送的请求就是这种类型。
2)后台只需用具有对应属性 id 和 name 的对象接收就行。
如果使用了 @RequestBody 来强行接收 Text 或者 application/x-www-form-urlencoded 类型,会报类型 not supported 的如下错误:
来源:https://blog.csdn.net/IT__learning/article/details/121582492
猜你喜欢
- 以前公司的产品已经上线20多年了,主要是维护,也就是改bug。每周我们Team会从Jira上拿我们可以改的bug,因为每个团队负责的业务范围
- 默认情况下,如果应用以 Android Q 为目标平台,则在访问外部存储设备中的文件时会进入过滤视图。应用可以使用 Context.getE
- 本文实例讲述了C#实现终止正在执行的线程的实现方法,并针对一些容易出错的地方进行了深入分析,具体方法如下:一般来说,很多人都会使用Abort
- 一、Servlet简介Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口,
- 一、LinkedHashMap的类继承关系二、源码分析1.自己对LinkedHashMap的理解从继承关系上,我们看到LinkedHashM
- 本文实例讲述了Java实现特定范围的完数输出算法。分享给大家供大家参考,具体如下:题目内容:一个正整数的因子是所有可以整除它的正整数。而一个
- 简介redis 多数据源主要的运用场景是在需要使用多个redis服务器或者使用多个redis库,本文采用的是fastdep依赖集成框架,快速
- 前言回想写过的图书管理系统、租房系统、电影院卖票系统都是基于原生的JavaSE、OOP,没有用到任何框架,在层与层的关系中一个类要想获得与其
- 本文实例讲述了java用接口、多态、继承、类计算三角形和矩形周长及面积的方法。分享给大家供大家参考。具体如下:定义接口规范:/** * @
- 用Java编写一个简单的酒店管理系统,供大家参考,具体内容如下为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。1、
- jcasbin简介:jcasbin 是一个用 Java 语言打造的轻量级开源访问控制框架https://github.com/casbin/
- 最近在用SpringMvc做Http接口时,对方在调用我接口时发现Date格式的默认转化为long,因此在前端页面看到的是一串数字。我们可以
- 软件需求VS2019社区版、win10操作系统、opencv4.1.0VS2019社区版(免费) 下载地址OpenCV4.1.0 下载地址配
- 俗话说,工欲善其事,必先利其器。要做微信公众号开发,两样东西不可少,那就是要有一个用来测试的公众号,还有一个用来调式代码的开发环境。测试公众
- 本文详细的介绍了Spring组件的实现步骤,分享给大家,具体如下:背景Spring 框架提供了许多接口,可以使用这些接口来定制化 bean
- 前言上一篇分析了事务注解的解析过程,本质上是将事务封装为切面加入到AOP的执行链中,因此会调用到MethodInceptor的实现类的inv
- 网上搜集了java的学习思维导图,分享给大家。01.Java程序设计(基础)02.Java程序设计(专题)03.客户端网页编程04.Java
- 今天遇到pom中添加dependency时相关的jar会自动下载,但是左边的External Libraries中一直获取不到添加的jar问
- 本文实例讲述了java实现图片写入高清字体及带边框的方法。分享给大家供大家参考。具体实现方法如下:Graphics2D g2=image.c
- SpringEL表达式取值一般是${var}方式取值, 见于application.properties和@Value("${va