转自:http://blog.csdn.net/kobejayandy/article/details/12690041

简介:

@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 plaincopy

  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. @RequestMapping(method = RequestMethod.POST)

  22. public String add(@Valid AppointmentForm appointment, BindingResult result) {

  23. if (result.hasErrors()) {

  24. return "appointments/new";

  25. }

  26. appointmentBook.addAppointment(appointment);

  27. return "redirect:/appointments";

  28. }

  29. }

value的uri值为以下三类:

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

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

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

example B)

[java] view plaincopy

  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 plaincopy

  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 plaincopy

  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 plaincopy

  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 plaincopy

  1. @Controller

  2. @RequestMapping("/owners/{ownerId}")

  3. public class RelativePathUriTemplateController {

  4. @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")

  5. public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {

  6. // implementation omitted

  7. }

  8. }

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

headers的样例:

[java] view plaincopy

  1. @Controller

  2. @RequestMapping("/owners/{ownerId}")

  3. public class RelativePathUriTemplateController {

  4. @RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")

  5. public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {

  6. // implementation omitted

  7. }

  8. }

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

转载于:https://blog.51cto.com/yt0116/1737139

RequestMapping相关推荐

  1. Controller类的方法上的RequestMapping一定要写在Controller类里吗?

    使用Spring Cloud做项目的同学会使用Feign这个组件进行远程服务的调用,Feign这个组件采用模板的方式,有着优雅的代码书写规范.核心原理对Feign等相关注解进行解析,并提取信息,在Sp ...

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

    Spring MVC 学习总结(二)--控制器定义与@RequestMapping详解 目录 一.控制器定义 1.1.实现接口Controller定义控制器 1.2.使用注解@Controller定义 ...

  3. Spring3 MVC 注解---注解基本配置及@controller和 @RequestMapping 常用解释

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

  4. Spring中Controller和RequestMapping的详解

    先看一个简单的实例: @Controller @RequestMapping("/hello") public class anyTypeController{@RequestMa ...

  5. spring mvc -@RequestMapping注解详解

    https://www.cnblogs.com/caoyc/p/5635173.html @RequestMapping参数说明: value:定义处理方法的请求的URL地址(重点): method: ...

  6. ssm框架requestmapping找不到_框架学习,就是介么简单

    框架学习 程序员凯小白 最近实训ssm框架,SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大 ...

  7. requestmapping配置页面后_@RequestMapping使用须知

    ----------------------siwuxie095 @RequestMapping 使用须知 使用 @RequestMapping 注解映射请求路径 即 你可以使用 @RequestMa ...

  8. SpringMVC框架 学习DAY_03:@RequestMapping注解/拦截器与过滤器

    1. 关于@RequestMapping注解 在控制器中,在处理请求的方法之前添加@RequestMapping注解,可以配置请求路径与处理请求的方法的映射关系! 在@RequestMapping注解 ...

  9. requestmapping默认是get还是post_编写Spring MVC控制器的14个技巧,你今天get到了吗?...

    Java面试笔试面经.Java技术每天学习一点 公众号Java面试 关注我不迷路 原文:http://dzone.com/articles/14-tips-for-writing-spring-mvc ...

  10. @RequestMapping参数详解

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

最新文章

  1. apache自动跳转到服务HTML,apache自动将http协议跳转到https
  2. 运用RUP 4+1视图方法进行软件架构设计
  3. 《我在51CTO微职位学软考——奋发之路》
  4. ListView属性设置
  5. 解决交通拥堵、监测核辐射、野外搜救…无人机将有哪些神应用?
  6. C语言 n的作业,C语言作业练习
  7. 文言的理解 —— 古时的称谓、别称、别名
  8. Window 浏览器窗口对象
  9. 挑战性题目DSCT302:求不同形态的平衡二叉树数目
  10. 自媒体月入过万的自媒体赚钱工具,免费教会你!
  11. Halcon 入门教程
  12. pico的学习之路(五)——ssd1306上显示汉字(树莓派pico实现)
  13. 如何“复活”一个人,这里有一份最全的技术路线图谱丨钛媒体深度
  14. python 猜词游戏(文本文件、数据库、csv)
  15. Mac mini 2018 win10 外接显卡终极教程
  16. PyTorch深度学习——PyCharm中使用matplotlib画3D曲面图
  17. 乌鸦救赎《社交光环》
  18. JS中的event 对象详解
  19. UVALive 7279 Sheldon Numbers
  20. 开发 transport 协议转换层

热门文章

  1. Redis:18---常用功能之(Lua脚本)
  2. (十二)深入浅出TCPIP之Nagle算法
  3. (二十)深入浅出TCPIP之epoll的一些思考
  4. QT5生成.exe文件时,出现缺少QT5core.dll文件解决方法
  5. 《Python Cookbook 3rd》笔记(5.20):与串行端口的数据通信
  6. java五子棋源代码_java 五子棋游戏源码
  7. js页面自适应屏幕大小_移动端自适应布局方法的calc()与vw
  8. C++ limits头文件的用法numeric_limits
  9. Git学习的最佳教程
  10. 配置Oracle Instant Client环境