Spring MVC之@RequestMapping 详解

Spring MVC:@RequestMapping Spring MVC @RequestMapping注解介绍 阅读详情

引言:

前段时间项目中用到了REST风格来开发程序,但是当用POST、PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/json, 而且服务器端通过request.getReader() 打出的数据里确实存在浏览器提交的数据。为了找出原因,便对参数绑定(@RequestParam、 @RequestBody、 @RequestHeader 、 @PathVariable)进行了研究,同时也看了一下HttpMessageConverter的相关内容,在此一并总结。


简介:

@RequestMapping

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

RequestMapping注解有六个属性,下面我们把她分成三类进行说明。

1、 value, method;

value:     指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);

method:  指定请求的method类型, GET、POST、PUT、DELETE等;


2、 consumes,produces;

consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;


3、 params,headers;

params: 指定request中必须包含某些参数值是,才让该方法处理。

headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。


示例:

1、value  / method 示例

默认RequestMapping("....str...")即为value的值;

[java]  view plain copy
  1. @Controller  
  2. @RequestMapping("/appointments")  
  3. public class AppointmentsController {  
  4.   
  5.     private final AppointmentBook appointmentBook;  
  6.       
  7.     @Autowired  
  8.     public AppointmentsController(AppointmentBook appointmentBook) {  
  9.         this.appointmentBook = appointmentBook;  
  10.     }  
  11.   
  12.     @RequestMapping(method = RequestMethod.GET)  
  13.     public Map<String, Appointment> get() {  
  14.         return appointmentBook.getAppointmentsForToday();  
  15.     }  
  16.   
  17.     @RequestMapping(value="/{day}", method = RequestMethod.GET)  
  18.     public Map<String, Appointment> getForDay(@PathVariable @DateTimeFormat(iso=ISO.DATE) Date day, Model model) {  
  19.         return appointmentBook.getAppointmentsForDay(day);  
  20.     }  
  21.   
  22.     @RequestMapping(value="/new", method = RequestMethod.GET)  
  23.     public AppointmentForm getNewForm() {  
  24.         return new AppointmentForm();  
  25.     }  
  26.   
  27.     @RequestMapping(method = RequestMethod.POST)  
  28.     public String add(@Valid AppointmentForm appointment, BindingResult result) {  
  29.         if (result.hasErrors()) {  
  30.             return "appointments/new";  
  31.         }  
  32.         appointmentBook.addAppointment(appointment);  
  33.         return "redirect:/appointments";  
  34.     }  
  35. }  

value的uri值为以下三类:

A) 可以指定为普通的具体值;

B)  可以指定为含有某变量的一类值(URI Template Patterns with Path Variables);

C) 可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions);


example B)

[java]  view plain copy
  1. @RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)  
  2. public String findOwner(@PathVariable String ownerId, Model model) {  
  3.   Owner owner = ownerService.findOwner(ownerId);    
  4.   model.addAttribute("owner", owner);    
  5.   return "displayOwner";   
  6. }  

example C)
[java]  view plain copy
  1. @RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")  
  2.   public void handle(@PathVariable String version, @PathVariable String extension) {      
  3.     // ...  
  4.   }  
  5. }  


2 consumes、produces 示例

cousumes的样例:

[java]  view plain copy
  1. @Controller  
  2. @RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")  
  3. public void addPet(@RequestBody Pet pet, Model model) {      
  4.     // implementation omitted  
  5. }  
方法仅处理request Content-Type为“application/json”类型的请求。


produces的样例:

[java]  view plain copy
  1. @Controller  
  2. @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")  
  3. @ResponseBody  
  4. public Pet getPet(@PathVariable String petId, Model model) {      
  5.     // implementation omitted  
  6. }  

方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;


3 params、headers 示例

params的样例:

[java]  view plain copy
  1. @Controller  
  2. @RequestMapping("/owners/{ownerId}")  
  3. public class RelativePathUriTemplateController {  
  4.   
  5.   @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")  
  6.   public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {      
  7.     // implementation omitted  
  8.   }  
  9. }  

 仅处理请求中包含了名为“myParam”,值为“myValue”的请求;


headers的样例:

[java]  view plain copy
  1. @Controller  
  2. @RequestMapping("/owners/{ownerId}")  
  3. public class RelativePathUriTemplateController {  
  4.   
  5. @RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")  
  6.   public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {      
  7.     // implementation omitted  
  8.   }  
  9. }  

 仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.ifeng.com/”的请求;



上面仅仅介绍了,RequestMapping指定的方法处理哪些请求,下面一篇将讲解怎样处理request提交的数据(数据绑定)和返回的数据。


原文:http://blog.youkuaiyun.com/kobejayandy/article/details/12690041

Spring MVC框架下的@RequestMapping映射实践 在Spring框架中,类级别上的注解提供了一种将一个特定的类映射到URL路径上的方法。该注解可以被放置在控制器类的上方,目的是为控制器类中的所有方法提供一个共同的基础URL。这种方式可以简化URL的配置,并保持一致性。// 方法逻辑// 方法逻辑以上代码中,定义了一个基础路径/api/v1,所有在这个控制器中定义的方法都将继承这个路径。这也就意味着,getUsers方法实际上映射到了路径上。在Spring框架中,注解不仅可以应用于类级别,同样也可以应用于方法级别。 阅读详情

相关推荐

在AVP28335(兼容德州仪器TMS320-28335) 上实现ModbusSlaveRTU-485源码及注释。

今天先把题目先给出来, 在近两天会把源码 (含详细注释 )及部署、测试结果给出来, 希望能给大家帮助。(全免费 我有点缺德,断了别人的一个财路)。

FOOLCODE的专栏 642

RequestMapping的用法(完整)

spring @RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一。这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。 在这篇文章中,你将会看到 @RequestMapping 注解在被用来进行 Spring MVC 控制器方法的映射可以如何发挥其多才多艺的功能的。Request Mapping 基础用法 在 Spring M...

swebin的专栏 15万+

基于ENVI5.6与SARscape的哨兵一号时序InSAR实战:从数据准备到PS/SBAS结果解译

本文详细介绍了基于ENVI5.6与SARscape软件,利用哨兵一号(Sentinel-1)卫星数据,进行PS-InSAR与SBAS-InSAR时序分析,以监测地表形变的完整实战流程。内容涵盖从数据下载、软件配置、预处理、核心处理步骤到结果解译与质量评估,重点解析了PS与SBAS方法的关键参数设置、常见问题及解决方案,旨在帮助用户掌握从数据准备到成果分析的完整技术链条。

oo7890的博客 633

@RequestMapping详解

大家好,我是~ 今天主要介绍的就是哆啦a梦的法宝之一——任意门,我们知道任意门可以随意通往自己想要到达的地方,直接就是一扇门,打开就到了另外一个地方,非常神奇。 而在我们的Java web开发中也有一个同样神奇的法宝,可以为我们节省好多时间和代码,从而实现浏览器与服务器之间的映射,它就是——RequestMapping注解,下面我们一起来了解一下吧。 文章目录 前言 @RequestMapping 1.@RequestMapping可以标注的位置 1.1 标注在方法上 1.2 标注在类和方法上

m0_67401055的博客 8万+

人大金仓V8R3企业版License更新全攻略:从查看到重启一步到位

本文详细解析了人大金仓V8R3企业版License更新的完整运维流程,涵盖从诊断当前授权状态、获取与验证新文件、精准定位旧文件路径,到安全替换文件及服务重启验证的全过程。重点针对更新流程中常见的版本匹配、文件定位、权限与服务重启等关键环节提供了实战解决方案和避坑指南,帮助运维人员高效、平稳地完成授权续期。

redis7keeper的博客 896

《QT+PCL 第一章》:点云读取显示

点云读取显示一、核心代码二、QT设置三、效果展示 一、核心代码 二、QT设置 三、效果展示

阁楼 1万+

SpringMVC学习之路(三)——@RequestMapping注解(超详细)

详细介绍@RequestMapping注解的功能和属性,带你上手@RequestMapping注解!!

qq_32792547的博客 2031

基于深度学习的电力系统暂态稳定评估与预防控制复现

本文复现了基于深度学习的电力系统暂态稳定评估与预防控制方法。主要内容包括:(1)数据预处理环节,对IEEE 39节点系统的电压幅值、相角等特征数据进行归一化处理;(2)ACNGAT模型实现,该模型结合时间卷积网络(TCN)和图注意力网络(GAT)提取时空特征;(3)采用改进的帝企鹅优化算法进行预防控制。关键技术点包括:融合时空信息的特征提取、改进的邻接矩阵构建方法(λ_ij = E_i * E_j * B_ij)以及时空注意力机制。代码实现采用Python和PyTorch框架。

huanghm88的专栏 335

@RequestMapping注解详解

@RequestMapping注解详解

zsy_yyds的博客 2053

【专栏必读】王道考研408数据结构+算法设计与分析万字笔记使用说明及章节导航

各位老铁思维导图在我整理完笔记后会放上去的,我需要根据王道的思维导图重新再做一遍 文章目录一:有关注意事项二:关于专栏三:学习建议四:各专栏导航(各位老铁别催,质量优先)(1)第一章:绪论(2)第二章:线性表(3)第三章:栈和队列第四章:串第五章:二叉树第六章:图 首先感谢王道大大(手动比心),很用心在做了,大家可以看其中两节是否符合胃口 (王道408考研数据结构)第五章树-第三节1:二叉树遍历(先序、中序和后序) (王道408考研数据结构)第五章树-第四节2:平衡二叉树(AVL)及其旋转 一:有.

快乐江湖的博客 5万+

美军利用MANET技术实现无人作战单元协同作战

本文首先介绍了移动自组织网络 (MANET)以及Wave Relay®波形中继技术,并探讨了波形中继MANET平台在美空军ABMS项目等军事方面的运用情况。

guanyifu9的博客 853

【Spring MVC】@RequestMapping 详解

RequestMapping注解一共有8个属性,常用的有value属性、method属性,其它6个属性往往容易被忽视,因此本文将逐一介绍这8个属性的作用及用法示例代码依赖版本如下。

Hi there 3830

HTML满屏跳动的爱心(完整代码)

HTML语言实现满屏跳动爱心的完整代码。

AIGC 12万+

spring mvc注解@RequestMapping的作用及属性

目录 一、@RequestMapping注解的作用是什么? 二、@RequestMapping注解的属性有哪些? 一、@RequestMapping注解的作用是什么? @RequestMapping注解是web应用程序中最常被用到的注解之一,作用就是映射URL路径,将http的请求地址映射到控制器(controller)类的处理方法上。 @RequestMapping注解可以定义在控制器类上,也可以定义在类里面的方法上。 定义类上:将http请求映射到该控制器上,规定初步的请...

冰冻非一日之寒 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring MVC 解读——@RequestMapping详解(一)

转自:https://my.oschina.net/HeliosFly/blog/212329 为了降低文章篇幅,使得文章更目标化,简洁化,我们就不例举各种@RequestMapping的用法等内容了. 文章主要说明以下问题: Spring怎样处理@RequestMapping(怎样将请求路径映射到控制器类或方法) Spring怎样将请求分派给正确的...

lukabruce的博客 507

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spring MVC 教程-@Controller、@RequestMapping

RequestMaping中value、path、consumers、producers稍微用到的多一些,其他几个属性用到的比较少,了解即可。关于6种规则,大家可以自己去试试,会springboot的朋友,可以直接使用springboot快速写一些用例结合postman测试下,加深记忆和理解。

smart_an的专栏 1232

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Spring MVC 中@RequestMapping 注解是如何工作的?

Spring MVC 中@RequestMapping 注解是如何工作的?

专注于技术分享 1434

Spring MVC @RequestMapping注解

简介 @RequestMapping注解是一个用来处理请求地址映射的注解,相当于Servlet中在web.xml中配置的映射作用一致,在控制器的类定义及方法定义处都可以标注。 用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。 DispatcherServlet截获请求后,通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。 @RequestMap...

Hern(宋兆恒) 610

Spring 的MVC @RequestMapping

这篇文章对Spring 的MVC @RequestMapping讲解的很清楚,摘记备忘. @Controller @RequestMapping("/appointments") public class AppointmentsController {     private final AppointmentBook appointmentBook;          @Aut

2441

Spring MVC @RequestMapping注解详解

@RequestMapping 参数说明   value:定义处理方法的请求的 URL 地址。(重点)   method:定义处理方法的 http method 类型,如 GET、POST 等。(重点)   params:定义请求的 URL 中必须包含的参数。或者不包含某些参数。(了解)   headers:定义请求中 Request Headers 必须包含的参数。或者不包含某些参数。(了解) ...

weixin_43060102的博客 277

Spring MVC中@RequestMapping注解的全面解析

在Spring MVC框架中,注解是处理请求映射的核心注解。它用于将请求和控制器方法关联起来,实现请求的映射和处理。以下是注解的详细介绍。

m0_74824802的博客 999

Spring MVC控制器完全指南:@Controller、@RequestMapping和@ResponseBody详解

Spring MVC控制器是构建Web应用的核心组件,负责处理用户请求并返回响应。本指南将通过实例详解`@Controller`、`@RequestMapping`和`@ResponseBody`三大核心注解的使用方法,帮助新手快速掌握Spring MVC开发技能。 ## Spring MVC控制器基础架构 Spring MVC框架采用分层架构设计,控制器在其中扮演着关键角色。下图展示了Spr

gitblog_00846的博客 1182
上一篇: Spring MVC的@ResponseBody返回JSON串
下一篇: Spring MVC之@RequestBody, @ResponseBody 详解
AlvinTech14
博客等级 码龄12年 10粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值