`
youyu4
  • 浏览: 440393 次
社区版块
存档分类
最新评论

@RequestMapping 注释详解

 
阅读更多

@RequestMapping 注释详解

 

简介:

 

@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.   
  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 get() {  
  14.         return appointmentBook.getAppointmentsForToday();  
  15.     }  
  16.   
  17.     @RequestMapping(value="/{day}", method = RequestMethod.GET)  
  18.     public Map 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 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.   
  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 plaincopy
 
  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/”的请求;

 

 

分享到:
评论

相关推荐

    spring mvc注释文档

    ### Spring MVC注释文档知识点详解 #### 概述 随着技术的发展与演进,软件开发领域不断出现新的设计理念和技术框架。Spring MVC作为Spring框架的重要组成部分之一,在Spring 2.5版本中引入了基于注解的配置方式,...

    spring学习教程之@ModelAttribute注解运用详解

    @ModelAttribute注解运用详解 @ModelAttribute注解是Spring框架中的一种重要注解,用于将模型数据绑定到控制器的方法参数中。下面我们将详细介绍@ModelAttribute注解的使用方法和示例代码。 一、@ModelAttribute...

    ModelAttribute注解详细使用.docx

    ### ModelAttribute注解详解 在Spring MVC框架中,`@ModelAttribute`注解是一个非常重要的工具,它主要用于将请求参数绑定到Model对象上。这不仅提高了数据处理的灵活性,还简化了控制器方法的设计。 #### 一、`@...

    SpringMVC3.1实例源码

    **SpringMVC 3.1 实例源码详解** SpringMVC是Spring框架的一个核心模块,专注于处理Web应用的请求和响应。在这个基于SpringMVC 3.1的实例中,我们将深入探讨其主要功能、架构和配置。Spring 3.1引入了一些重要的...

    spring-5.0.2中文注释版

    《Spring框架5.0.2中文注释版详解》 Spring框架是Java开发中的核心工具集,它以其模块化、可扩展性和强大的依赖注入特性,极大地简化了企业级应用的开发工作。本篇将深入探讨Spring 5.0.2中文注释版中的关键知识点...

    SSM笔记-SpringMVC基本使用

    **SpringMVC基础详解** SpringMVC是Spring框架的一个模块,专门用于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者有效地处理HTTP请求和响应,实现松耦合和高可测试性的应用。在本文中,我们将...

    基于SpringMVC+Hibernate开发的管理系统

    【SpringMVC详解】 ...开发者可以通过注释驱动的配置和强大的功能集快速开发和维护应用程序。虽然该项目仍处于开发阶段,但它已经具备了基础的架构和功能,随着后续的更新和完善,其潜力将进一步展现。

    Java非侵入式API接口文档工具apigcc用法详解

    2. **编写注释**:在Java控制器类和方法上添加Javadoc注释,如`@RestController`、`@RequestMapping`、`@RequestParam`等,以便apigcc能解析出接口信息。 ```java /** * 欢迎使用Apigcc * @index 1 */ @...

    春天核心注释

    《春天核心注解详解》 在Java开发领域,Spring框架以其强大的功能和灵活性深受开发者喜爱。其中,"春天核心注解"(Spring Core Annotations)是Spring框架中的重要组成部分,它极大地简化了Java代码,提高了代码的...

    SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解

    注意,如果你需要使用主题模式,需要取消注释`spring.jms.pub-sub-domain=true`。否则,系统默认会使用队列模式。 然后,我们创建一个控制器类`ProducerController`,通过注入`JmsProducerService`来发送消息。例如...

    Java利用反射如何查找使用指定注解的类详解

    "Java利用反射如何查找使用指定注解的类详解" 在Java中,反射机制是指在程序运行期检查和修改类、方法、变量的能力。Java中的反射机制主要通过Java.lang.reflect包来实现。反射机制可以帮助我们在代码中动态地加载...

    连接OrientDB的小例子 基于SSM框架

    **SSM框架与OrientDB连接详解** SSM框架,由Spring、SpringMVC和MyBatis三个组件组成,是Java开发中常见的Web应用程序框架。它提供了强大的模型-视图-控制器(MVC)架构模式支持,以及灵活的数据访问机制。而Orient...

    spring4注解

    ### Spring4 注解详解 #### 一、背景与概述 在Spring框架的早期版本中,主要依赖XML配置文件来进行依赖注入和其他配置管理。随着技术的发展和应用需求的变化,这种配置方式逐渐显得繁琐且不易维护。为了解决这一...

    工作日志_李响115_202108301

    【知识点详解】 1. **JavaScript同源策略与跨域请求** JavaScript的同源策略是浏览器为了保护用户信息安全而设定的一种安全机制。它限制了来自不同源的"document"或脚本对DOM的访问。在JavaScript中,如果源(协议...

    rest-client-generator:用于从带注释的 Spring 控制器接口生成休息客户端的库

    3. **注解驱动开发**:Spring MVC 使用注解来简化配置,例如 `@RestController`、`@RequestMapping` 等,使得代码更简洁、易读。 4. **代码生成**:rest-client-generator 将注解解析并生成相应的客户端代码,可以...

    IDEASSM框架实战CRUDSSM整合配置MyBatis逆向工程.docx

    #### 三、SSM框架关键配置文件详解 SSM框架整合需要配置多个文件,包括`web.xml`、`applicationContext.xml`、`spring-mvc.xml`及MyBatis的相关配置文件。 ##### 1. web.xml 这是Web应用的核心配置文件,用于配置...

Global site tag (gtag.js) - Google Analytics