SpringMVC的 @RestController和@Controller 區別


 

 

@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 中,因而無法正常顯示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM