引言
在Spring MVC框架中,@RequestMapping
注解是用来映射HTTP请求路径到具体的Controller方法的。Controller方法的返回值决定了响应的数据类型和数据内容。本文将介绍如何使用@RequestMapping
注解以及Controller方法的返回值。
@RequestMapping注解
@RequestMapping
注解用于标记一个方法可以响应什么样的请求。它可以用在方法级别和类级别,可以接受的参数包括path
、value
、method
、produces
、consumes
等等。
使用方法路径映射
使用path
或value
参数来指定请求路径,如下所示:
@Controller
@RequestMapping("/users")
public class UserController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getAllUsers() {
//...
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String getUserById(@PathVariable("id") Long id) {
//...
}
}
上述代码中,@RequestMapping
注解标记了UserController
类和方法getAllUsers()
、getUserById()
可以响应/users
路径下的GET请求。
使用HTTP方法映射
使用method
参数来指定HTTP请求方法,如下所示:
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getAllUsers() {
//...
}
上述代码中,@RequestMapping
注解标记了getAllUsers()
方法只能响应GET请求。
使用媒体类型映射
使用produces
参数来指定响应的媒体类型,如下所示:
@RequestMapping(value = "/", method = RequestMethod.GET, produces = "application/json")
public String getAllUsers() {
//...
}
上述代码中,@RequestMapping
注解标记了getAllUsers()
方法只会响应application/json
类型的请求。
Controller方法返回值
Controller方法的返回值决定了响应的数据类型和数据内容。常用的返回值类型包括String
、ModelAndView
、@ResponseBody
等。
返回视图名称
如果是返回视图名称,直接返回一个字符串即可,如下所示:
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getAllUsers() {
return "allUsers";
}
上述代码中,getAllUsers()
方法返回了一个字符串allUsers
,表示使用allUsers
作为视图名称,Spring MVC将根据该名称找到对应的视图。
返回ModelAndView对象
如果需要在视图中渲染数据,可以返回一个ModelAndView
对象,如下所示:
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ModelAndView getUserById(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("user", user);
modelAndView.setViewName("userDetail");
return modelAndView;
}
上述代码中,getUserById()
方法返回了一个包含模型数据和视图名称的ModelAndView
对象,"userDetail"
表示使用userDetail
作为视图名称,user
对象将作为模型数据传递给视图。
返回JSON数据
如果需要返回JSON格式的数据,可以使用@ResponseBody
注解,如下所示:
@ResponseBody
@RequestMapping(value = "/", method = RequestMethod.GET, produces = "application/json")
public List<User> getAllUsers() {
List<User> users = userService.getAllUsers();
return users;
}
上述代码中,@ResponseBody
注解标记了getAllUsers()
方法的返回值将直接作为响应的内容,而不是作为视图名称。此外,produces = "application/json"
指定了响应的媒体类型为JSON格式。
结论
@RequestMapping
注解和Controller方法的返回值是Spring MVC框架中重要的组成部分。通过使用@RequestMapping
注解,我们可以方便地定义URL路径和HTTP请求方法的映射关系。而Controller方法的返回值决定了响应的数据类型和数据内容,可以返回视图名称、渲染数据的ModelAndView对象,或者直接返回JSON数据。
通过灵活使用@RequestMapping
注解和合适的Controller方法返回值,我们可以构建出功能完善、易扩展的Spring MVC应用程序。
本文来自极简博客,作者:紫色薰衣草,转载请注明原文链接:Spring MVC的RequestMapping注解、Controller方法返回值