一、基本介绍
@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_helloworld`示例,你可以了解`@RequestMapping`注解的基本用法,以及如何在Spring MVC框架下构建一个基本的Web应用。随着对Spring MVC的深入学习,你会发现更多高级特性,如拦截器、异常...
1. **类级别的@RequestMapping**:当在类上使用时,该注解会应用于类中所有方法,为整个控制器设定一个基础的请求路径。例如,`@RequestMapping("/api")` 将使类中的所有方法都处理以"/api"开头的URL请求。 2. **...
通过在类级别或方法级别使用此注解,可以实现URL到处理逻辑的映射。 例如,在类级别: ```java @RequestMapping("/users") public class UserController { // ... } ``` 在此例子中,所有`UserController`中的...
在Spring MVC框架中,`@RequestMapping`注解是核心组件之一,它负责将HTTP请求映射到控制器类的处理方法。这个注解可以应用于类级别和方法级别,以定义请求的URL路径、HTTP方法以及其他的匹配条件。接下来,我们将...
在Spring MVC框架中,`@RequestMapping`注解是核心组件之一,它负责将HTTP请求映射到处理这些请求的方法上。这个注解提供了极大的灵活性,允许开发者以多种方式定义请求映射,从而实现精确的控制和高效的应用程序...
在Spring MVC框架中,`@RequestMapping`注解是核心组件之一,它用于处理HTTP请求映射,使得控制器类(Controller)中的方法能够与特定的URL路径关联起来。本篇文章将深入探讨`@RequestMapping`的使用、功能以及相关...
`@RequestMapping`作为Spring MVC框架中的核心注解之一,承担着至关重要的角色——它负责建立URL请求与处理该请求的控制器方法之间的关联。接下来,我们将深入探讨`@RequestMapping`注解的各个方面及其在实际项目中...
例如,类级别上的`@RequestMapping("/api")`和方法级别的`@RequestMapping("/users")`组合起来,表示`/api/users`这个URL将由该方法处理。`@RequestMapping`还支持多种HTTP方法(GET、POST、PUT、DELETE等)。 `@...
SpringMVC 是一个基于Java的Web应用程序框架,使用了Model-View-Controller(MVC)模式来分离应用程序的逻辑。SpringMVC提供了许多注解来简化配置和开发过程。下面将详细介绍SpringMVC的注解。 1. @Controller 注解...
首先,@RequestMapping注解可以应用于类级别或方法级别。当应用于类级别时,它定义了一个基础路径,所有该类中的方法请求路径都将以此为基础。例如: ```java @Controller @RequestMapping("/appointments") public...
springmvc-RequestMapping 根据映射的 URL 定位具有 @RequestMapping 注释的整个类或特定处理程序方法目的 : 大多数时候,当我们不熟悉基于 spring 框架的 Web 应用程序时,我们只有一种选择来定位 Controller 类或...
这个注解通常与控制器(Controller)方法一起使用,允许我们将Java对象直接序列化为JSON或XML格式,从而返回给客户端。下面我们将深入探讨`@ResponseBody`的使用、工作原理以及相关的配置和最佳实践。 1. **基本...
在这个"springmvc-demo04-请求细节说明"的示例中,我们将深入探讨`@RequestMapping`的使用方式和相关知识点。 首先,`@RequestMapping`可以应用于类级别和方法级别。在类级别上,它定义了一个控制器类的基本请求...
使用方法直接下载导入到自己的eclipse工具中,tomcat进行部署,访问地址:http://ip:port/springmvc02/toLogin.do;将login.jsp中的form表单中的action请求路径修改为LoginController类中的相应的@RequestMapping("/...
在上面的代码中,我们使用@RequestMapping注解来映射/test01请求,然后使用HttpServletRequest的getRequestDispatcher方法来实现跳转。 2. 传统方式跳转_重定向 除了请求转发之外,我们还可以使用传统的重定向方式...
- **`@RequestMapping`**: 这个注解是Spring MVC中的核心注解之一,主要用于建立请求与处理方法之间的映射关系。它可以应用在类级别或者方法级别,用于指定Controller类或方法处理的具体URL路径。 #### 如何使用...
本文主要介绍了SpringMVC的@InitBinder参数转换代码实例,通过示例代码详细介绍了@InitBinder的使用方法和原理,对大家的学习或者工作具有一定的参考学习价值。 一、什么是@InitBinder? @InitBinder是一个...
首先,`@RequestMapping`在类级别上的使用定义了一个初步的请求映射,通常作为URL路径的基础。例如: ```java @RequestMapping("/user") public class UserController { // ... } ``` 在这个例子中,`/user`路径...
- SpringMVC支持使用@RequestMapping和HTTP方法来实现RESTful服务。 8. **国际化**: - SpringMVC支持国际化,通过MessageSource接口提供多语言消息支持。 - 使用localeResolver来处理不同地区的用户请求,结合...
SpringMVC通过DispatcherServlet作为入口点,负责请求的分发,使得开发者可以使用注解来简化配置,如@Controller、@RequestMapping等。 JAX-RS,全称Java API for RESTful Web Services,是Java标准中定义的一套...