`

SpringMVC之@RequestMapping用法

阅读更多


一、基本介绍
@RequestMapping 注解可以用在类上,也可以用在方法上。



@RestController
@RequestMapping("/home")
public class IndexController {
  @RequestMapping("/")
  String get(){
    return "Hello from get";
  }
  @RequestMapping("/index")
  String index(){
    return "Hello from index";
  }
}


/*

/home       请求,会调用 get()   方法,
/home/index 请求,会调用 index() 方法。

*/






二、一个 @RequestMapping ,匹配多个路径
@RestController
@RequestMapping("/home")
public class IndexController {

@RequestMapping(value={"", "/page", "page*","view/*,**/msg"})
  String indexMultipleMapping(){
    return "Hello from index multiple mapping.";
  }
}


/*

下面的路径都将匹配到 indexMultipleMapping() 方法进行处理:

  - localhost:8080/home
  - localhost:8080/home/
  - localhost:8080/home/page
  - localhost:8080/home/pageabc
  - localhost:8080/home/view/
  - localhost:8080/home/view/view


*/




三、@RequestMapping 中使用 @RequestParam 绑定参数
@RestController	
@RequestMapping("/home")
public class IndexController {
  


/*

匹配:localhost:8090/home/id?_id=5


*/
  @RequestMapping(value = "/id")								
  String getIdByValue(@RequestParam("_id") String personId){
    System.out.println("ID is "+personId);
    return "Get ID from query string of URL with value element";
  }


/*

匹配:localhost:8090/home/personId?personId=5

注意:如果方法参数的 personId 名称 与 请求路径中参数的名称一致,
     则可以省略 @RequestParam 后面小括号的内容
*/

  @RequestMapping(value = "/personId")							
  String getId(@RequestParam String personId){
    System.out.println("ID is "+personId);	
    return "Get ID from query string of URL without value element";	
  }
}


/*

@RequestParam 的 required 属性用法示例

*/
@RestController
@RequestMapping("/home")
public class IndexController {
  @RequestMapping(value = "/name")
  String getName(@RequestParam(value = "person", required = false) String personName){
    return "Required element of request param";
  }
}


/*

@RequestParam 的 defaultValue 属性用法示例

*/
@RestController	
@RequestMapping("/home")
public class IndexController {
  @RequestMapping(value = "/name")
  String getName(@RequestParam(value = "person", defaultValue = "John") String personName ){
    return "Required element of request param";
  }
}




四、@RequestMapping 结合 HTTP 请求方法使用

HTTP 请求方法包括:  GET, PUT, POST, DELETE, and PATCH.

@RestController
@RequestMapping("/home")
public class IndexController {
  @RequestMapping(method = RequestMethod.GET)
  String get(){
    return "Hello from get";									
  }
  @RequestMapping(method = RequestMethod.DELETE)
  String delete(){
    return "Hello from delete";
  }
  @RequestMapping(method = RequestMethod.POST)
  String post(){
    return "Hello from post";
  }
  @RequestMapping(method = RequestMethod.PUT)
  String put(){
    return "Hello from put";
  }
  @RequestMapping(method = RequestMethod.PATCH)
  String patch(){
    return "Hello from patch";
  }
}

/*
请求路径都是 /home,但是根据 http 发送的请求方法的不同,
匹配不同的处理方法。

*/




/*

@RequestMapping 根据请求方法,的简写

*/

@RequestMapping("/home")
public class IndexController {
  @GetMapping("/person")
  public @ResponseBody ResponseEntity<String> getPerson() {
    return new ResponseEntity<String>("Response from GET", HttpStatus.OK);
  }
  @GetMapping("/person/{id}")
  public @ResponseBody ResponseEntity<String> getPersonById(@PathVariable String id){
    return new ResponseEntity<String>("Response from GET with id " +id,HttpStatus.OK);				  }
  @PostMapping("/person")
  public @ResponseBody ResponseEntity<String> postPerson() {
    return new ResponseEntity<String>("Response from POST method", HttpStatus.OK);
  }
  @PutMapping("/person")
  public @ResponseBody ResponseEntity<String> putPerson() {
    return new ResponseEntity<String>("Response from PUT method", HttpStatus.OK);
  }
  @DeleteMapping("/person")
  public @ResponseBody ResponseEntity<String> deletePerson() {
    return new ResponseEntity<String>("Response from DELETE method", HttpStatus.OK); 
  }
  @PatchMapping("/person")
  public @ResponseBody ResponseEntity<String> patchPerson() {
    return new ResponseEntity<String>("Response from PATCH method", HttpStatus.OK);	
  }
}



五、@RequestMapping 缩小匹配范围:限制输入和输出格式


@RestController
@RequestMapping("/home")
public class IndexController {

/*

只匹配消费类型是 application/JSON 的请求
*/
  @RequestMapping(value = "/prod", produces = {"application/JSON"})
  @ResponseBody
  String getProduces(){
    return "Produces attribute";
  }


/*

只匹配输入类型是 application/JSON 或 application/XML 的请求
*/
  @RequestMapping(value = "/cons", consumes = {"application/JSON", "application/XML"})
  String getConsumes(){
    return "Consumes attribute";
  }
}







六、@RequestMapping 缩小匹配范围:限制 Headers 请求头

/*

只匹配 header 中含有:content-type=text/plain 的请求
*/
@RestController	
@RequestMapping("/home")
public class IndexController {
  @RequestMapping(value = "/head", headers = {"content-type=text/plain"})
  String post(){	
    return "Mapping applied along with headers";	
  }								
}


/*

只匹配 header 中含有:content-type=text/plain 或 content-type=text/html 的请求
*/
@RestController
@RequestMapping("/home")
public class IndexController {
  @RequestMapping(value = "/head", headers = {"content-type=text/plain", "content-type=text/html"})		  String post(){
    return "Mapping applied along with headers";
  }								
}






七、@RequestMapping 缩小匹配范围:限制请求参数

@RestController
@RequestMapping("/home")
public class IndexController {
  @RequestMapping(value = "/fetch", params = {"personId=10"})
  String getParams(@RequestParam("personId") String id){
    return "Fetched parameter using params attribute = "+id;
  }
  @RequestMapping(value = "/fetch", params = {"personId=20"})
    String getParamsDifferent(@RequestParam("personId") String id){
    return "Fetched parameter using params attribute = "+id;
  }
}






八、@RequestMapping 动态匹配 URL
@RestController
@RequestMapping("/home")
public class IndexController {
  @RequestMapping(value = "/fetch/{id}", method = RequestMethod.GET)
  String getDynamicUriValue(@PathVariable String id){
    System.out.println("ID is "+id);
    return "Dynamic URI parameter fetched";						
  } 
  @RequestMapping(value = "/fetch/{id:[a-z]+}/{name}", method = RequestMethod.GET)
    String getDynamicUriValueRegex(@PathVariable("name") String name){
    System.out.println("Name is "+name);
    return "Dynamic URI parameter fetched using regex";		
  } 
}




九、@RequestMapping 设定默认匹配的方法
@RestController
@RequestMapping("/home")
public class IndexController {

  /*
这个 @RequestMapping() 什么值也没设定,作为默认处理 /home 请求的方法。
*/
  @RequestMapping()
  String default(){									
    return "This is a default method for the class";
  }
}






转载请注明,
原文出处: http://lixh1986.iteye.com/blog/2429836













-

引用:
https://springframework.guru/spring-requestmapping-annotation/






  • 大小: 32.2 KB
分享到:
评论

相关推荐

    springmvc之@RequestMapping的demo

    通过这个简单的`springmvc_helloworld`示例,你可以了解`@RequestMapping`注解的基本用法,以及如何在Spring MVC框架下构建一个基本的Web应用。随着对Spring MVC的深入学习,你会发现更多高级特性,如拦截器、异常...

    springmvc关于@requestMapping和@requestParam的使用

    1. **类级别的@RequestMapping**:当在类上使用时,该注解会应用于类中所有方法,为整个控制器设定一个基础的请求路径。例如,`@RequestMapping("/api")` 将使类中的所有方法都处理以"/api"开头的URL请求。 2. **...

    SpringMVC@RequestMapping(重点)@RequestParam@PathVariable示例

    通过在类级别或方法级别使用此注解,可以实现URL到处理逻辑的映射。 例如,在类级别: ```java @RequestMapping("/users") public class UserController { // ... } ``` 在此例子中,所有`UserController`中的...

    Springmvc中 RequestMapping 属性用法归纳.docx

    在Spring MVC框架中,`@RequestMapping`注解是核心组件之一,它负责将HTTP请求映射到控制器类的处理方法。这个注解可以应用于类级别和方法级别,以定义请求的URL路径、HTTP方法以及其他的匹配条件。接下来,我们将...

    SpringMVC-2 使用@RequestMapping映射请求

    在Spring MVC框架中,`@RequestMapping`注解是核心组件之一,它负责将HTTP请求映射到处理这些请求的方法上。这个注解提供了极大的灵活性,允许开发者以多种方式定义请求映射,从而实现精确的控制和高效的应用程序...

    Spring MVC--2.@RequestMapping 映射请求

    在Spring MVC框架中,`@RequestMapping`注解是核心组件之一,它用于处理HTTP请求映射,使得控制器类(Controller)中的方法能够与特定的URL路径关联起来。本篇文章将深入探讨`@RequestMapping`的使用、功能以及相关...

    springMVC中 RequestMapping的使用.docx

    `@RequestMapping`作为Spring MVC框架中的核心注解之一,承担着至关重要的角色——它负责建立URL请求与处理该请求的控制器方法之间的关联。接下来,我们将深入探讨`@RequestMapping`注解的各个方面及其在实际项目中...

    springmvc:@Controller @RequestMapping @RequestParam,模型和ModelAndView Spring MVC实践

    例如,类级别上的`@RequestMapping("/api")`和方法级别的`@RequestMapping("/users")`组合起来,表示`/api/users`这个URL将由该方法处理。`@RequestMapping`还支持多种HTTP方法(GET、POST、PUT、DELETE等)。 `@...

    springmvc注解详解

    SpringMVC 是一个基于Java的Web应用程序框架,使用了Model-View-Controller(MVC)模式来分离应用程序的逻辑。SpringMVC提供了许多注解来简化配置和开发过程。下面将详细介绍SpringMVC的注解。 1. @Controller 注解...

    Spring MVC之@RequestMapping注解详解

    首先,@RequestMapping注解可以应用于类级别或方法级别。当应用于类级别时,它定义了一个基础路径,所有该类中的方法请求路径都将以此为基础。例如: ```java @Controller @RequestMapping("/appointments") public...

    springmvc-RequestMapping:根据映射的 URL 定位具有 @RequestMapping 注释的整个类或特定处理程序方法

    springmvc-RequestMapping 根据映射的 URL 定位具有 @RequestMapping 注释的整个类或特定处理程序方法目的 : 大多数时候,当我们不熟悉基于 spring 框架的 Web 应用程序时,我们只有一种选择来定位 Controller 类或...

    SpringMVC使用@ResponseBody.rar

    这个注解通常与控制器(Controller)方法一起使用,允许我们将Java对象直接序列化为JSON或XML格式,从而返回给客户端。下面我们将深入探讨`@ResponseBody`的使用、工作原理以及相关的配置和最佳实践。 1. **基本...

    springmvc-demo04-请求细节说明.zip

    在这个"springmvc-demo04-请求细节说明"的示例中,我们将深入探讨`@RequestMapping`的使用方式和相关知识点。 首先,`@RequestMapping`可以应用于类级别和方法级别。在类级别上,它定义了一个控制器类的基本请求...

    springmvc02.zip

    使用方法直接下载导入到自己的eclipse工具中,tomcat进行部署,访问地址:http://ip:port/springmvc02/toLogin.do;将login.jsp中的form表单中的action请求路径修改为LoginController类中的相应的@RequestMapping("/...

    SpringMVC实现简单跳转方法(专题)

    在上面的代码中,我们使用@RequestMapping注解来映射/test01请求,然后使用HttpServletRequest的getRequestDispatcher方法来实现跳转。 2. 传统方式跳转_重定向 除了请求转发之外,我们还可以使用传统的重定向方式...

    Spring2.5_基于注解驱动的SpringMVC

    - **`@RequestMapping`**: 这个注解是Spring MVC中的核心注解之一,主要用于建立请求与处理方法之间的映射关系。它可以应用在类级别或者方法级别,用于指定Controller类或方法处理的具体URL路径。 #### 如何使用...

    SpringMVC的@InitBinder参数转换代码实例

    本文主要介绍了SpringMVC的@InitBinder参数转换代码实例,通过示例代码详细介绍了@InitBinder的使用方法和原理,对大家的学习或者工作具有一定的参考学习价值。 一、什么是@InitBinder? @InitBinder是一个...

    基于框架的Web开发-RequestMapping通配符和占位符.doc

    首先,`@RequestMapping`在类级别上的使用定义了一个初步的请求映射,通常作为URL路径的基础。例如: ```java @RequestMapping("/user") public class UserController { // ... } ``` 在这个例子中,`/user`路径...

    尚硅谷SpringMVC部分全套教学文档笔记

    - SpringMVC支持使用@RequestMapping和HTTP方法来实现RESTful服务。 8. **国际化**: - SpringMVC支持国际化,通过MessageSource接口提供多语言消息支持。 - 使用localeResolver来处理不同地区的用户请求,结合...

    SpringMVC精品资源--JAX-RS &amp; SpringMVC supported maven buil.zip

    SpringMVC通过DispatcherServlet作为入口点,负责请求的分发,使得开发者可以使用注解来简化配置,如@Controller、@RequestMapping等。 JAX-RS,全称Java API for RESTful Web Services,是Java标准中定义的一套...

Global site tag (gtag.js) - Google Analytics