Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

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!