JavaWeb中的常用的请求传参注解说明

 更新时间:2023年04月04日 14:35:43   作者:IT__learning  
这篇文章主要介绍了JavaWeb中的常用的请求传参注解说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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 的如下错误:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Spring注入Hibernate验证框架

    使用Spring注入Hibernate验证框架

    这篇文章主要介绍了使用Spring注入Hibernate验证框架方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Nacos与SpringBoot实现配置管理的开发实践

    Nacos与SpringBoot实现配置管理的开发实践

    在微服务架构中,配置管理是一个核心组件,而Nacos为此提供了一个强大的解决方案,本文主要介绍了Nacos与SpringBoot实现配置管理的开发实践,具有一定的参考价值
    2023-08-08
  • springboot调用支付宝第三方接口(沙箱环境)

    springboot调用支付宝第三方接口(沙箱环境)

    这篇文章主要介绍了springboot+调用支付宝第三方接口(沙箱环境),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Java实现宠物商店管理

    Java实现宠物商店管理

    这篇文章主要为大家详细介绍了Java实现宠物商店管理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • Spring中@Value读取properties作为map或list的操作

    Spring中@Value读取properties作为map或list的操作

    这篇文章主要介绍了Spring中@Value读取properties作为map或list的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java实现视频时间维度剪切的工具类

    Java实现视频时间维度剪切的工具类

    这篇文章主要为大家详细介绍了将视频按照时间维度进行剪切的Java工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • Java和Python现在都挺火,我应该怎么选?

    Java和Python现在都挺火,我应该怎么选?

    这篇文章主要介绍了Java和Python现在都挺火,我应该怎么选?本文通过全面分析给大家做个参考,需要的朋友可以参考下
    2020-07-07
  • 解析Spring Mvc Long类型精度丢失问题

    解析Spring Mvc Long类型精度丢失问题

    在平时开发过程中,经常会使用long类型作为id的类型,但是在使用过程中会导致long类型数据转换为number类型时的后两位变为0,今天小编给大家分享Spring Mvc Long类型精度丢失问题,需要的朋友参考下吧
    2021-06-06
  • java 详解类加载器的双亲委派及打破双亲委派

    java 详解类加载器的双亲委派及打破双亲委派

    这篇文章主要介绍了java 详解类加载器的双亲委派及打破双亲委派的相关资料,需要的朋友可以参考下
    2017-01-01
  • springboot集成springsession如何实现分布式session共享

    springboot集成springsession如何实现分布式session共享

    这篇文章主要介绍了springboot集成springsession如何实现分布式session共享问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论