专栏首页JAVA乐园1、Spring注解之@RequestMapping

1、Spring注解之@RequestMapping

阅读文本大概需要3分钟。

@RequestMapping是一个用来处理请求地址映射的注解,可用于类或者方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestMapping注解有六个属性:

下面进行详细的讲解:

  • value:指定请求的实际地址,指定的地址可以是URI Template模式。
  • method:指定请求的method类型,GET、POST、PUT、DELETE等。
  • consumes:指定处理请求的提交内容类型(Content-Type),例如application/json、application/xml、text/html等。
  • produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
  • params:指定request中必须包含某些参数值才让该方法处理。
  • headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。

备注:

@RequestMapping中consumes和produces的区别RequestMapping中consumes和produces的区别:

说到这两个参数,不得不先回顾一下HTTP协议Header中的两个东西

Content-Type 和Accept。在Request中,Content-Type 用来告诉服务器当前发送的数据是什么格式;而Accept 用来告诉服务器,客户端能认识哪些格式数据,最好返回这些格式中的其中一种。

  • consumes 用来限制Content-Type
  • produces 用来限制Accept

例子:

有个用户给发了一个请求,

请求头中

Content-Type =application/json

Accept = */*

就是说用户发送的json格式的数据,可以接收任意格式的数据返回。但是如果接口中定义如下:

@Controller
public class HelloWorld {
     @RequestMapping(value="/helloworld",consumes={"application/xml"},produces={"application/xml"})
        public String hello(){
         System.out.println("hello world");return"success";
    }
}

该接口只接收 application/xml 格式数据,也只返回application/xml格式数据。很明显是调不通这个接口的。

稍微改一下该接口,即可:

@Controller
public class HelloWorld {
     @RequestMapping(value="/helloworld",consumes={"application/xml","application/json"},produces={"application/xml"})
        public String hello(){
         System.out.println("hello world");return"success";
    }
}

handler method参数绑定常用的注解,根据他们处理的request的不同内容部分分为四类:

  • 处理request uri部分的注解:@PathVariable;
  • 处理request header部分的注解:@RequestHeader, @CookieValue;
  • 处理request body部分的注解:@RequestParam, @RequestBody;
  • 处理attribute类型的注解:@SessionAttributes, @ModelAttribute;

@PathVariable

当使用@RequestMapping URI template样式映射时,即someUrl/{paramId},这时的paramId可通过@PathVariable注解绑定它传过来的值到方法的参数上。

@RequestHeader、@CookieValue

@RequestHeader注解可以把Request请求header部分的值绑定到方法的参数上。

@CookieValue可以把Request header中关于cookie的值绑定到方法的参数上。

本文分享自微信公众号 - JAVA乐园(happyhuangjinjin88),作者:java乐园

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Git 常用命令

    java乐园
  • 通俗易懂了解一下分库分表的概念

    以表的主键字段为依据,按照一定策略(取模,hash等),将本来在一个库中的数据拆分到多个库中。

    java乐园
  • 程序员瞎长类动物,这个视频肯定笑死你,但是安全不能瞎

    http://mpvideo.qpic.cn/tjg_3081972243_50000_e5e57902e8ad407f90be3cafafe5328b.f10...

    java乐园
  • 教育直播app开发需要推流器吗?

    作为直播行业的延伸发展分类,教育直播app已经成为学生日常生活中的必需品,该现象也让教育培训机构发现了商机,纷纷投身于教育直播app开发行业。但在开发时,还需熟...

    万岳教育源码
  • Java高级特性——注解,这也许是最简单易懂的文章了

    博主在初学注解的时候看到网上的介绍大部分都是直接介绍用法或者功能,没有实际的应用场景,篇幅又很长导致学习的时候难以理解其意图,而且学完就忘QAQ。本篇文章中我将...

    Java团长
  • Java高级特性——注解,这也许是最简单易懂的文章了

    博主在初学注解的时候看到网上的介绍大部分都是直接介绍用法或者功能,没有实际的应用场景,篇幅又很长导致学习的时候难以理解其意图,而且学完就忘QAQ。本篇文章中我将...

    lyb-geek
  • Java集合Map面试题,面试必问

    1.HashMap存储键值对实现快速存取,允许为null。key值不可重复,若key值重复则覆盖。

    公众号 IT老哥
  • 图神经网络的ImageNet?斯坦福大学等开源百万量级OGB基准测试数据集

    图神经网络是近来发展较快的机器学习分支领域。通过将非结构数据转换为结构化的节点和边的图,然后采用图神经网络进行学习,往往能够取得更好的效果。

    机器之心
  • 0734-5.16.1-集群外客户端跨网段向Kerberos环境的Hadoop集群提交作业(续)

    在前面的文章《如何在集群外节点跨网段向HDFS写数据》和《外部客户端跨网段访问Hadoop集群方式(续)》中介绍了如何在集群外的客户端节点上访问Hadoop集群...

    Fayson
  • WCF技术剖析之二十八:自己动手获取元数据[附源代码下载]

    元数据的发布方式决定了元数据的获取行为,WCF服务元数据架构体系通过ServiceMetadataBehavior实现了基于WS-MEX和HTTP-GET的元数...

    蒋金楠

扫码关注云+社区

领取腾讯云代金券