Spring 处理 HTTP 请求参数注解的操作方法

 更新时间:2024年04月28日 11:07:27   作者:daydreamed  
这篇文章主要介绍了Spring 处理 HTTP 请求参数注解的操作方法,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友参考下吧

@RequestParam、@RequestBody、@RequestPart 对比

请求体格式:

  • @RequestParam:application/x-www-form-urlencoded
  • @RequestBody:application/json、application/xml
  • @RequestPart:multipart/form-data

入参类型:

  • @RequestParam:基本类型、String、MultipartFile
  • @RequestBody:k-v
  • @RequestPart:k-v,MultipartFile

注解属性

  • @RequestParam:value/name、required、defaultValue
  • @RequestBody:required
  • @RequestPart:value/name、required

匹配解析器:

/**
 * Find a registered {@link HandlerMethodArgumentResolver} that supports
 * the given method parameter.
 */
@Nullable
private HandlerMethodArgumentResolver getArgumentResolver(MethodParameter parameter) {
    HandlerMethodArgumentResolver result = this.argumentResolverCache.get(parameter);
    if (result == null) {
        for (HandlerMethodArgumentResolver resolver : this.argumentResolvers) {
            if (resolver.supportsParameter(parameter)) {
                result = resolver;
                this.argumentResolverCache.put(parameter, result);
                break;
            }
        }
    }
    return result;
}

@RequestHeader、@RequestAttribute、@PathVariable、@CookieValue、@SessionAttribute 对比

作用:
@RequestHeader:用于接收请求头中的参数
@RequestAttribute:用于接收上一个请求中设置的参数
@PathVariable:用于接收路径中的参数
@CookieValue:用于接收 Cookie 中的参数
@SessionAttribute:用于接收 Session 中的参数

用例:

// 1 @RequestParam 
// 1.1 指定属性名
@GetMapping("/test")
public Result test(@RequestParam("param") String param);
// 1.2 指定非必传,默认是必传
@GetMapping("/test")
public Result test(@RequestParam(value = "param", required = false) String param);
// 2 @RequestBody
@PostMapping("/test")
public Result test(@RequestBody Map<String, Object> params);
// 3 @RequestPart
@PostMapping("/test")
public Result test(@RequestParam("file") MultipartFile file, @RequestPart("params") Map<String, Object> params);
// 4 @RequestHeader
@GetMapping("/test")
public Result test(@RequestHeader("param") String param);
// 5 @RequestAttribute
@GetMapping("/test")
public Result test(@RequestAttribute("param") String param);
// 6 @PathVariable
@GetMapping("/test/{param}")
public Result test(@PathVariable("param") String param);
// 7 @CookieValue
@GetMapping("/test")
public Result test(@CookieValue("param") String param);
// 8 @SessionAttribute
@GetMapping("/test")
public Result test(@SessionAttribute("param") String param);

到此这篇关于Spring 处理 HTTP 请求参数注解的文章就介绍到这了,更多相关Spring HTTP 请求注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java多线程(单例模式,堵塞队列,定时器)详解

    Java多线程(单例模式,堵塞队列,定时器)详解

    这篇文章主要介绍了java多线程的(单例模式,堵塞队列,定时器),具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下
    2021-08-08
  • 详解Java线程池如何统计线程空闲时间

    详解Java线程池如何统计线程空闲时间

    这篇文章主要和大家分享一个面试题:Java线程池是怎么统计线程空闲时间?文中的示例代码讲解详细,对我们掌握Java有一定帮助,需要的可以参考一下
    2022-11-11
  • spring-cloud入门之spring-cloud-config(配置中心)

    spring-cloud入门之spring-cloud-config(配置中心)

    这篇文章主要介绍了spring-cloud入门之spring-cloud-config(配置中心),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Java枚举类型与泛型使用解读

    Java枚举类型与泛型使用解读

    这篇文章主要介绍了Java枚举类型与泛型使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 生成PDF全攻略之在已有PDF上添加内容的实现方法

    生成PDF全攻略之在已有PDF上添加内容的实现方法

    下面小编就为大家带来一篇生成PDF全攻略之在已有PDF上添加内容的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • JavaGUI实现随机单词答题游戏

    JavaGUI实现随机单词答题游戏

    这篇文章主要为大家详细介绍了JavaGUI实现随机单词答题游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Java微信二次开发(二) Java微信文本消息接口请求与发送

    Java微信二次开发(二) Java微信文本消息接口请求与发送

    这篇文章主要为大家详细介绍了Java微信二次开发第二篇,Java微信文本消息接口请求与发送功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Java中Hashtable类与HashMap类的区别详解

    Java中Hashtable类与HashMap类的区别详解

    Hashtable的应用非常广泛,HashMap是新框架中用来代替Hashtable的类,也就是说建议使用HashMap,不要使用Hashtable。可能你觉得Hashtable很好用,为什么不用呢?这里简单分析他们的区别。
    2016-01-01
  • java字符串反转的7种方法

    java字符串反转的7种方法

    本文主要介绍了java字符串反转的7种方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • springboot如何设置请求参数长度和文件大小限制

    springboot如何设置请求参数长度和文件大小限制

    这篇文章主要介绍了springboot如何设置请求参数长度和文件大小限制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论