- @RestController注解,相当于@Controller + @ResponseBody结合,无法返回jsp,html页面,视图解析器无法解析页面。
- @ResponseBody表示方法的结果直接写入HTTP response body中,一般在异步获取数据时使用【也就是ajax】,使用@RequestMapping后,返回值通常为跳转路径,但是加上@ResponseBody后返回结果不会被解析为跳转路径。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| @Controller @RequestMapping("falarmUser") public class FalarmUserController {
private static final Logger logger = LoggerFactory.getLogger(FalarmUserController.class);
@Autowired private FalarmUserService falarmUserService;
@PostMapping("addUser") public Object addUser(@RequestBody FalarmUserEntity userEntity){ logger.info("添加成员的信息 : " + userEntity.toString()); Response res = new Response(); res = falarmUserService.addUser(userEntity); return res; }
|
Response类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| @JsonInclude(value = JsonInclude.Include.NON_EMPTY) public class Response implements Serializable {
private static final long serialVersionUID = 1L;
private Integer code;
private Object data;
private String message;
public Response() { super(); }
public Integer getCode() { return code; }
public void setCode(Integer code) { this.code = code; }
public Object getData() { return data; }
public void setData(Object data) { this.data = data; }
public String getMessage() { return message; }
public void setMessage(String message) { this.message = message; } }
|
如果使用@RestController,请求之后返回的结果如下:

如果使用@Controller,返回结果如下:

@Controller注解不能将结果写入到HTTP response body中,因而无法正常显示。
摘自/参考链接