简介
在SpringMVC中,我们可以使用@ResponseBody注解来将方法返回值直接转换为HTTP响应体,并发送给浏览器。使用@ResponseBody可以简化代码,减少代码量,提高开发效率。
语法
@ResponseBody的语法如下:
代码语言:javascript复制@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ResponseBody {
@AliasFor("contentType")
String value() default "";
@AliasFor("value")
String contentType() default "";
}
示例
下面是一个使用@ResponseBody注解向浏览器返回JSON数据的示例:
代码语言:javascript复制@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
@ResponseBody
public User getUser(@PathVariable("id") Long id) {
return userService.getUser(id);
}
}
在上述示例中,我们使用了SpringMVC的@RestController注解来声明一个控制器。控制器中有一个getUser方法,用于返回指定id的用户信息。getUser方法使用了@GetMapping注解,表示使用GET方法访问/users/{id}路径时会调用该方法。
getUser方法中使用了@ResponseBody注解,表示返回值会被直接转换为HTTP响应体,并发送给浏览器。getUser方法返回了userService.getUser(id)的结果,即指定id的用户信息,该信息会被自动转换成JSON格式的字符串,并发送给浏览器。
需要注意的是,在使用@ResponseBody注解时,SpringMVC会根据请求头中的Accept字段来判断返回的数据类型。如果请求头中的Accept字段为application/json,则返回值会被转换成JSON格式的字符串,并设置响应头Content-Type为application/json;charset=UTF-8。如果请求头中的Accept字段为text/html,则返回值会被当作HTML字符串返回,并设置响应头Content-Type为text/html;charset=UTF-8。