Request Mappings in Spring MVC
In Spring MVC, request mappings are used to map web requests to specific handler classes or methods. This guide covers the key annotations used for request mappings and their purposes, including @RequestMapping, @GetMapping, @PostMapping, @PutMapping, and @DeleteMapping.
Key Request Mapping Annotations
- @RequestMapping: Used to map web requests to specific handler classes or methods.
- @GetMapping: Specialized version of
@RequestMappingfor handling HTTP GET requests. - @PostMapping: Specialized version of
@RequestMappingfor handling HTTP POST requests. - @PutMapping: Specialized version of
@RequestMappingfor handling HTTP PUT requests. - @DeleteMapping: Specialized version of
@RequestMappingfor handling HTTP DELETE requests. - @PatchMapping: Specialized version of
@RequestMappingfor handling HTTP PATCH requests.
@RequestMapping Annotation
The @RequestMapping annotation is used to map web requests to specific handler classes or methods. It can be applied at the class level and/or method level.
Example:
// UserController.java
package com.example.springmvc.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/users")
public class UserController {
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ResponseBody
public String listUsers() {
return "User List";
}
}
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping Annotations
These annotations are specialized versions of @RequestMapping for handling specific HTTP methods. They simplify the code and improve readability.
@GetMapping Example:
// UserController.java
package com.example.springmvc.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/users")
public class UserController {
@GetMapping("/list")
@ResponseBody
public String listUsers() {
return "User List";
}
}
@PostMapping Example:
// UserController.java
package com.example.springmvc.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/users")
public class UserController {
@PostMapping("/add")
@ResponseBody
public String addUser() {
return "Add User";
}
}
@PutMapping Example:
// UserController.java
package com.example.springmvc.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/users")
public class UserController {
@PutMapping("/update")
@ResponseBody
public String updateUser() {
return "Update User";
}
}
@DeleteMapping Example:
// UserController.java
package com.example.springmvc.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/users")
public class UserController {
@DeleteMapping("/delete")
@ResponseBody
public String deleteUser() {
return "Delete User";
}
}
@PatchMapping Annotation
The @PatchMapping annotation is used to map HTTP PATCH requests to specific handler methods.
@PatchMapping Example:
// UserController.java
package com.example.springmvc.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/users")
public class UserController {
@PatchMapping("/updatePartial")
@ResponseBody
public String updatePartialUser() {
return "Partial Update User";
}
}
Combining Request Mapping Annotations
You can combine request mapping annotations with other annotations like @RequestParam and @PathVariable to handle various request parameters and URI variables.
Example:
// UserController.java
package com.example.springmvc.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/users")
public class UserController {
@GetMapping("/details")
@ResponseBody
public String getUserById(@RequestParam("id") int id) {
return "User Details for ID: " + id;
}
@GetMapping("/details/{id}")
@ResponseBody
public String getUserByIdPath(@PathVariable("id") int id) {
return "User Details for ID: " + id;
}
}
Key Points
- @RequestMapping: Used to map web requests to specific handler classes or methods.
- @GetMapping: Specialized version of
@RequestMappingfor handling HTTP GET requests. - @PostMapping: Specialized version of
@RequestMappingfor handling HTTP POST requests. - @PutMapping: Specialized version of
@RequestMappingfor handling HTTP PUT requests. - @DeleteMapping: Specialized version of
@RequestMappingfor handling HTTP DELETE requests. - @PatchMapping: Specialized version of
@RequestMappingfor handling HTTP PATCH requests. - Combine request mapping annotations with
@RequestParamand@PathVariableto handle request parameters and URI variables.
Conclusion
Request mappings are a fundamental part of handling web requests in Spring MVC. By understanding and using the various request mapping annotations, developers can build robust and maintainable web applications. Happy coding!
