@RequestMapping是springmvc核心注解之一,主要作用是建立请求URL与请求方法之间的映射关系,每当客户端有请求发过来,就根据请求URL找到对应的方法反射进行调用。

//该注解可以作用在类上和方法上,最终的URL是注解在类的路径与注解在方法上的路径结合。
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {//对请求方法的描述,比如可以说明该请求方法的作用啊啥的String name() default "";//URL,springmvc就是会根据该值与对应的方法进行映射。@AliasFor("path")String[] value() default {};//与value属性互为别名,作用一样。@AliasFor("value")String[] path() default {};//请求方法RequestMethod[] method() default {};//必须的参数列表。String[] params() default {};//必须的请求头String[] headers() default {};//用于指定该请求可以接收的正文类型(MIME类型)String[] consumes() default {};//用于指定可以生成的响应正文类型String[] produces() default {};
}

demo初始化环境是 SpringMVC注解驱动开发 时配置的环境。

注解属性详解

String[] value() default {}; 和 String[] path() default {};

这两个属性互为别名,作用一样,都是指定URL与对应的方法的映射,是数组,可以指定多个URL,也就是多个请求可以映射到同一个方法。

@Controller
public class RequestMappingController {@RequestMapping(value = {"/testRequestMapping","/testRequestMapping1"})public String testRequestMapping(String name,String value){System.out.println(name);System.out.println(value);return "RequsetMappingDemo";}
}



点击哪个连接都能进入该方法,并打印出name和value的值。

RequestMethod[] method() default {};

指定请求允许的方法,不指定使用默认值时,默认支持所有的请求方法。可以指定允许多种请求方法。
jsp修改:使用表达提交一个post请求。不指定method属性时,get、post都能进行访问。

method属性的值是RequestMethod 枚举。里面封装了多种HTTP请求方法。

public enum RequestMethod {GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE;private RequestMethod() {}
}

指定请求方法只能为GET请求。

结果使用get请求的a链接访问成功,使用post请求的表单提交报405错误。

method是数组类型,可以指定支持的多种方法。

String[] params() default {};

该注解指定请求必须要带有指定的参数,否则就会报400错误。

由于指定了请求必须带有name和value参数,而请求只有name参数,所以报错。

带上value参数就请求成功了

String[] headers() default {};

与params属性类似,指定请求必须要带有某些请求头才能访问成功,如果缺少,就报404。


加上aaa请求头,访问成功。

String[] consumes() default {};

用于指定服务器可以接收的MIME类型。consume是消费的意思,也就意味着服务器能消费的MIME类型。如果不指定表示可以消费任意的类型。
指定只能消费application/text类型。

然后请求发过去application/x-www-form-urlencoded的类型。

报415,不支持的类型。

添加指定支持application/x-www-form-urlencoded类型。

String[] produces() default {};

这个属性用于指定生成的正文类型,如果这个类型在请求的Accept头指定的请求可接收类型中不存在这个类型的话,就会报错。



指定生成application/json正文,请求却只接收text/html,所以会报错。

指定能生成text/html正文。

请求成功:

RequestMapping衍生注解

RequestMapping注解一共有5个衍生注解,分别是GetMapping、PostMapping、DeleteMapping、PutMapping、PatchMapping。

分别代表五种HTTP请求方法的注解。这是为了更加拥抱Restful风格API编写的注解,在spring4.3后出现。使用方法与RequestMapping注解类似。也有一定的区别,以GetMapping讲解为例。

@GetMapping:接收Get请求方法的RequestMapping。

//与RequestMapping注解不同的是,衍生注解只能作用于方法上。
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
//只GET请求方法
@RequestMapping(method = RequestMethod.GET)
public @interface GetMapping {//以下属性分别与RequestMapping注解的属性互为别名,作用一样。@AliasFor(annotation = RequestMapping.class)String name() default "";@AliasFor(annotation = RequestMapping.class)String[] value() default {};@AliasFor(annotation = RequestMapping.class)String[] path() default {};@AliasFor(annotation = RequestMapping.class)String[] params() default {};@AliasFor(annotation = RequestMapping.class)String[] headers() default {};@AliasFor(annotation = RequestMapping.class)String[] consumes() default {};@AliasFor(annotation = RequestMapping.class)String[] produces() default {};}

SpringMVC之@RequestMapping注解及其衍生注解详解相关推荐

  1. java注解式开发_JAVA语言之Spring MVC注解式开发使用详解[Java代码]

    本文主要向大家介绍了JAVA语言的Spring MVC注解式开发使用详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处 ...

  2. 一对一关联查询注解@OneToOne的实例详解(一)

    转载自: https://www.cnblogs.com/boywwj/p/8092915.html 一对一关联查询注解@OneToOne的实例详解 表的关联查询比较复杂,应用的场景很多,本文根据自己 ...

  3. java jsonfield_关于fastjson的@JSONField注解的一些问题(详解)

    @jsonfield 看源码它可以作用于字段和方法上. 引用网上说的, 一.作用field @jsonfield作用在field时,其name不仅定义了输入key的名称,同时也定义了输出的名称. 但是 ...

  4. php中引入shiro,基于shiro的自定义注解的扩展-图文详解

    基于shiro的自定义注解的扩展 这里我们主要采取了shiro的自定义注解的方案.本篇文章主要解决以下的问题.如何通过逻辑进行页面与api接口的关联. shiro的自身注解的用法. 如何编写自定义注解 ...

  5. 一对一关联查询注解@OneToOne的实例详解

    表的关联查询比较复杂,应用的场景很多,本文根据自己的经验解释@OneToOne注解中的属性在项目中的应用.本打算一篇博客把增删改查写在一起,但是在改的时候遇到了一些问题,感觉挺有意思,所以写下第二篇专 ...

  6. Spring Boot-@Conditional注解以及衍生注解@ConditionalOnBean

    @Conditional:判断@Conditional指定的条件是否成立,如果成立才会给容器中添加组件,配置类里面的内容才会生效 我们发现有很多的自动配置类,但是这些自动配置类都有指定的条件,必须满足 ...

  7. java注解 源码_详解Java注解教程及自定义注解

    详解Java注解教程及自定义注解 更新时间:2016-02-26 11:47:06   作者:佚名   我要评论(0) Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个 ...

  8. @Bean注解的使用和详解

    随着SpringBoot的流行,我们现在更多采用基于注解式的配置从而替换掉了基于XML的配置,所以本篇文章我们主要探讨基于注解的@Bean以及和其他注解的使用: @Bean 基础概念 @Bean:Sp ...

  9. 注解 @Scheduled配置参数详解,定时任务使用

    @Scheduled注解的使用这里不详细说明,直接对8个参数进行讲解. 参数详解 1.cron 该参数接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每 ...

最新文章

  1. 研究生实名举报深圳大学导师强迫学生延迟毕业,违规报销,各方回应
  2. git stash pop冲突_这有一份 git 日常使用清单,你需要吗?
  3. BCP utility in Sybase(Unix Environment)
  4. Cpp / 通用引用、引用折叠与完美转发问题
  5. 程序员面试中遇到问题
  6. Unity Shader: Shader粒子广告牌
  7. Blazor Hydra——在单个站点上托管多个Blazor SPA
  8. Python 报错TypeError: expected string or bytes-like object
  9. 【Node.js】Node.js安装及环境配置
  10. 上班两年干了些啥?该思考人生
  11. RAID磁盘阵列相关技术详解
  12. 树莓派环境处理_树莓派安装raspbian并配置开发环境
  13. 笔记本打印时出现打印机出现异常配置问题_win10系统打印机出现administrator无法打印如何解决...
  14. 上网代理设置会被自动清空_代理服务器上网(代理服务器老是自动打开)
  15. java 禁用迅雷_【Java】我擦!迅雷的代码结构竟然被扒了精光~
  16. python成都 培训
  17. html怎么做整个屏幕的遮罩,html遮罩实现
  18. 递归实现指数型,排列型,组合型枚举
  19. Java实现调用百度AI开放云平台(人脸识别API)
  20. 机器翻译质量评测算法-BLEU

热门文章

  1. 在Windows 10上安装TensorFlow 2.2.0 RC4版
  2. 大数据学习笔记19:MR案例——汇总三科成绩表文件
  3. SDOI2017R1(姑且是游记)
  4. 【codevs1026】逃跑的拉尔夫,广搜的胜利
  5. Bzoj 4422: [Cerc2015]Cow Confinement(线段树+扫描线)
  6. 【英语学习】【Daily English】U14 Transportation L02 I'm afraid that you're going in the wrong direction.
  7. GLSurfaceView基础学习笔记
  8. 快速傅立叶变换(FFT)的海面模拟
  9. 二进制(1):无符号编码和补码编码
  10. Unreal Engine 4 字符串转换