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
@RequestMapping
for handling HTTP GET requests. - @PostMapping: Specialized version of
@RequestMapping
for handling HTTP POST requests. - @PutMapping: Specialized version of
@RequestMapping
for handling HTTP PUT requests. - @DeleteMapping: Specialized version of
@RequestMapping
for handling HTTP DELETE requests. - @PatchMapping: Specialized version of
@RequestMapping
for 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
@RequestMapping
for handling HTTP GET requests. - @PostMapping: Specialized version of
@RequestMapping
for handling HTTP POST requests. - @PutMapping: Specialized version of
@RequestMapping
for handling HTTP PUT requests. - @DeleteMapping: Specialized version of
@RequestMapping
for handling HTTP DELETE requests. - @PatchMapping: Specialized version of
@RequestMapping
for handling HTTP PATCH requests. - Combine request mapping annotations with
@RequestParam
and@PathVariable
to 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!