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的值;

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

注意: value的uri值为以下三类:

A) 可以指定为普通的具体值;
B) 可以指定为含有某变量的一类值(URI Template Patterns with Path Variables);
C) 可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions);

  1. //[1].example B)
  2. @RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
  3. public String findOwner(@PathVariable String ownerId, Model model) {
  4. Owner owner = ownerService.findOwner(ownerId);
  5. model.addAttribute("owner", owner);
  6. return "displayOwner";
  7. }
  8.  
  9. //[2].example C)
  10. @RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
  11. public void handle(@PathVariable String version, @PathVariable String extension) {
  12. // ...
  13. }
  14. }

2 、consumes、produces 示例

  1. //[1].cousumes的样例:方法仅处理request Content-Type为“application/json”类型的请求。
  2. @Controller
  3. @RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")
  4. public void addPet(@RequestBody Pet pet, Model model) {
  5. // implementation omitted
  6. }
  7.  
  8. //[2].produces的样例:方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;
  9. @Controller
  10. @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")
  11. @ResponseBody
  12. public Pet getPet(@PathVariable String petId, Model model) {
  13. // implementation omitted
  14. }

3、 params、headers 示例

  1. //params的样例:仅处理请求中包含了名为“myParam”,值为“myValue”的请求;
  2. @Controller
  3. @RequestMapping("/owners/{ownerId}")
  4. public class RelativePathUriTemplateController {
  5.  
  6. @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")
  7. public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
  8. // implementation omitted
  9. }
  10. }
  11.  
  12. //headers的样例:仅处理request的header中包含了指定“Refer”请求头和对应值为"http://www.ifeng.com/"的请求;
  13. @Controller
  14. @RequestMapping("/owners/{ownerId}")
  15. public class RelativePathUriTemplateController {
  16.  
  17. @RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")
  18. public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
  19. // implementation omitted
  20. }
  21. }

@RequestMapping 详解的更多相关文章

  1. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    一.控制器定义 控制器提供访问应用程序的行为,通常通过服务接口定义或注解定义两种方法实现. 控制器解析用户的请求并将其转换为一个模型.在Spring MVC中一个控制器可以包含多个Action(动作. ...

  2. SpringMVC RequestMapping 详解

    SpringMVC RequestMapping 详解 RequestMapping这个注解在SpringMVC扮演着非常重要的角色,可以说是随处可见.它的知识点很简单.今天我们就一起学习Spring ...

  3. springMVC(1)---@RequestMapping详解

    @RequestMapping详解 RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.这句话,太熟悉了.   ...

  4. Spring MVC 学习)——控制器与@RequestMapping详解

    Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解 一.控制器定义 控制器提供访问应用程序的行为,通常通过服务接口定义或注解定义两种方法实现. 控制器解析用户的请求 ...

  5. Spring MVC之@RequestMapping 详解

    (转自:http://blog.csdn.net/walkerjong/article/details/7994326) 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.P ...

  6. @RequestMapping详解

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

  7. Spring MVC之@RequestMapping 详解(转)

    引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/j ...

  8. [转]Spring MVC之@RequestMapping 详解

    前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/json, ...

  9. Spring MVC 之@Controller@RequestMapping详解

    一:配置web.xml 1)问题:spring项目中有多个配置文件mvc.xml   dao.xml 2)解决:在web.xml中 <init-param> <param-name& ...

随机推荐

  1. Java核心技术卷一基础知识-第9章-Swing用户界面组件-读书笔记

    第9章 Swing用户界面组件 本章内容: * Swing与模型-视图-控制器设计模式 * 布局管理概述 * 文本输入 * 选择组件 * 菜单 * 复杂的布局管理 * 对话框 本章将介绍构造功能更加齐 ...

  2. Solr搜索引擎入门知识汇总

    1.技术选型,为什么用solr而不用lucene,或者其他检索工具 lucene:需要开发者自己维护索引文件,在多机环境中备份同步索引文件很是麻烦 Lucene本质上是搜索库,不是独立的应用程序.而S ...

  3. 本地语音识别开源软件pocketsphinx调试总结

    1问题一: fatal error: pocketsphinx.h: No such file or directory 解决方法: $ cd /usr/include $ sudo ln -s /m ...

  4. git提示error setting certificate verify locations以及fatal: unable to access 的解决办法

    z当使用git ------上传文件到GitHub上时!~~~出现了以下错误  :fatal: unable to access ' 可以采用以下解决方式: 修改GitHub上的地址格式=====ht ...

  5. c++中的左值与右值

    左值(lvalue)和右值(rvalue)是 c/c++ 中一个比较晦涩基础的概念,不少写了很久c/c++的人甚至没有听过这个名字,但这个概念到了 c++11 后却变得十分重要,它们是理解 move/ ...

  6. RabbitMQ访问控制

    Access Control (Authentication, Authorisation) in RabbitMQ 认证和授权这两个概念经常容易被混淆,甚至被互换使用.在RabbitMQ中这是错的, ...

  7. Unity UI性能优化技巧

    本文将介绍一些提升Unity UI性能的技巧.更多优化技巧,可以观看Unity工程师Ian Dundore在Unite Europe 2017的演讲<使用Unity性能提升技巧>. 1.划 ...

  8. [NewLife.XCode]数据初始化

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示 ...

  9. ajax实现文档导出及下载

    做导出一直遇到个问题就是不能用ajax实现一步导出文档,即导出加下载.今天突然想到可以分开来做就上网搜了下,发现一篇比较不错的文章(http://www.cnblogs.com/zj0208/p/59 ...

  10. leetcode — permutation-sequence

    import java.util.ArrayList; import java.util.List; /** * Source : https://oj.leetcode.com/problems/p ...