11. Spring MVC @RequestMapping
Spring MVC @RequestMapping
In spring MVC @RequestMapping plays the role of mapping URL to the method of controller class.
In Spring MVC application we generally use a URL which calls the Controller. In the Controller to map a given URL we use @RequestMapping annotation. RequestMapping can be used in many ways.
1. RequestMapping at Class Level
2. RequestMapping only at Method level
3. @RequestMapping annotations at class level as well as method levels
4. RequestMapping using HTTP methods
5. @RequestMapping with @RequestParam
6. @RequestMapping with @PathVariable
1. RequestMapping at Class Level
@RequestMapping can be added at class Level. This way the URI provided will act as base URI for all other methods in the Controller class.
@Controller
@RequestMapping(value = "/employee")
public class EmployeeController {
// Methods....
}
Now any requests with /employee as URL will hit this Controller class.
2. RequestMapping only at Method level
@RequestMapping is optional for class level and we can use it to annotate methods only.
@Controller
public class EmployeeController
{
@RequestMapping("/employee-management/employees")
public String getAllEmployees(Model model)
{
//application code
return "employeesList";
}
@RequestMapping("/employee-management/employees/add")
public String addEmployee(EmployeeVO employee)
{
//application code
return "employeesDetail";
}
@RequestMapping("/employee-management/employees/update")
public String updateEmployee(EmployeeVO employee)
{
//application code
return "employeesDetail";
}
}
In the above example /employee-management/employees/add will call addEmployee(EmployeeVO employee) method.
3. @RequestMapping annotations at class level as well as method levels
In the below example @RequestMapping is applied to both class and method level.
@Controller
@RequestMapping("/employee-management/employees/*")
public class EmployeeController
{
@RequestMapping
public String getAllEmployees(Model model)
{
//application code
return "employeesList";
}
@RequestMapping("/add")
public String addEmployee(EmployeeVO employee)
{
//application code
return "employeesDetail";
}
@RequestMapping("/update")
public String updateEmployee(EmployeeVO employee)
{
//application code
return "employeesDetail";
}
In the above example <BASE_URL>/employee-management/employees/add will call addEmployee(EmployeeVO employee) method.
4. RequestMapping using HTTP methods
We have different HTTP methods like POST, GET, DELETE etc. We can call a controller method for each of these methods using @RequestMapping and RequestMethod.
@Controller
@RequestMapping(value = "/employee")
public class EmployeeController {
@RequestMapping(value = "/display", method = RequestMethod.GET)
public String showEmployeeForm() {
//Some Code.....
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String saveEmployee() {
//Some Code.....
}
@RequestMapping(value = "/delete", method = RequestMethod.DELETE)
public String deleteEmployee() {
//Some Code.....
}
}
Also we can have one Controller method to use more than one RequestMethod. In below code if the URL is /display and HTTP method is either POST or GET, the showEmployeeForm() method will be called.
@RequestMapping(value = "/display", method = { RequestMethod.GET, RequestMethod.POST })
public String showEmployeeForm() {
return null;
}
5. @RequestMapping with @RequestParam
To fetch query string from the URL, @RequestParam is used as an argument.
@Controller
public class EmployeeController {
@RequestMapping(value="fetch")
public String getInfo(@RequestParam("id") String id) {
System.out.println("id:"+ id);
return "success";
}
}
If we access the URL as http://localhost:8080/sampleapp/fetch?id=KB100 then the id will be accessed by @RequestParam and the output will be KB100.
6. @RequestMapping with @PathVariable
To access path variable, spring provides @PathVariable that is used as an argument. We have to refer the variable in @RequestMapping using {}.
@RequestMapping(value="/fetch/{id}")
public String getInfo(@PathVariable("id") String id) {
System.out.println("id:"+ id);
return "success";
}
If we access the URL as /fetch/200, then the path variable id we will be assigned the value 200.
Comments
Post a Comment