@RestController注解,相當於@Controller+@ResponseBody兩個注解的結合,
返回json數據不需要在方法前面加@ResponseBody注解了,但使用@RestController這個注解,就不能返回jsp,html頁面,視圖解析器無法解析jsp,html頁面
@ResponseBody 表示該方法的返回結果直接寫入 HTTP response body 中,一般在異步獲取數據時使用【也就是AJAX】,
在使用 @RequestMapping后,返回值通常解析為跳轉路徑,
但是加上 @ResponseBody 后返回結果不會被解析為跳轉路徑,
而是直接寫入 HTTP response body 中。 比如異步獲取 json 數據,
加上 @ResponseBody 后,會直接返回 json 數據。
@RequestBody 將 HTTP 請求正文插入方法中,使用適合的 HttpMessageConverter 將請求體寫入某個對象。
@Controller @RequestMapping("falarmUser") public class FAlarmUserController { private static final Logger logger = LoggerFactory.getLogger(FAlarmUserController.class); @Autowired private FAlarmUserService fAlarmUserService; /** * 添加用戶 * @param userEntity * @return */ @PostMapping("addUser") public Object addUser(@RequestBody FAlarmUserEntity userEntity){ logger.info("添加成員的信息 : "+userEntity.toString()); Response res = new Response(); res = fAlarmUserService.addUser(userEntity); return res; } } Response 類: @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; } }
1、如果是用@RestController ,請求之后返回的結果如下。
2、如果使用 @Controller,返回結果 如下;
@Controller 注解不能將結果寫入到 HTTP response body 中,因而無法正常顯示。