1. 程式人生 > >@RestController 和 @Controller 的區別

@RestController 和 @Controller 的區別

@RestController註解,相當於@[email protected]兩個註解的結合,返回json資料不需要在方法前面加@ResponseBody註解了,但使用@RestController這個註解,就不能返回jsp,html頁面,檢視解析器無法解析jsp,html頁面

理解下面的註解哦。

@ResponseBody 表示該方法的返回結果直接寫入 HTTP response body 中,一般在非同步獲取資料時使用【也就是AJAX】,在使用 @RequestMapping後,返回值通常解析為跳轉路徑,但是加上 @ResponseBody 後返回結果不會被解析為跳轉路徑,而是直接寫入 HTTP response body 中。 比如非同步獲取 json 資料,加上 @ResponseBody 後,會直接返回 json 資料。@RequestBody 將 HTTP 請求正文插入方法中,使用適合的 HttpMessageConverter 將請求體寫入某個物件。

擼程式碼:

//@RestController
@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;
    }
}

如果是用@RestController ,請求之後返回的結果如下。

如果使用 @Controller,返回結果 如下;

@Controller 註解不能將結果寫入到  HTTP response body 中,因而無法正常顯示。

相關推薦

RestControllerController區別

知識點:@RestController註解相當於@ResponseBody + @Controller合在一起的作用。 1) 如果只是使用@RestController註解Controller,則Controller中的方法無法返回jsp頁面,或者html,配置的檢視解析器 InternalRe

關於@RestController @Controller區別

@Controller和@RestController的區別? 官方文件:@RestController is a stereotype annotation that combines @ResponseBody and @Controller.意思是:@RestController註解相當於

@RestController @Controller區別

@RestController是@ResponseBody + @Controller合體,當你在這個controller中方法只是想返回一個頁面時,就不能用@RestController,因為它會把你的返回值當作資料返回,而不是頁面名字,所以這時候就只能用@Controll

@RestController@Controller區別

使用@Controller 註解,在對應的方法上,檢視解析器可以解析return 的jsp,html頁面,並且跳轉到相應頁面 若返回json等內容到頁面,則需要加@ResponseBody註解。 如果你的程式碼寫的如下: @Controller @Request

@RestController @Controller區別

@RestController註解,相當於@[email protected]兩個註解的結合,返回json資料不需要在方法前面加@ResponseBody註解了,但使用@RestController這個註解,就不能返回jsp,html頁面,檢視解析器無法解析jsp,

RestController Controller區別

在SpringMVC中,經常會使用註解 的方式來定義一個控制器。 最常用的有控制器註解@Controller,可以在控制器類中寫各種業務方法,然後返回資料,一般資料的返回分成兩大種 頁面 返回靜態頁面 ModelAndView 返回頁面和相應資料

springmvc中controller 使用@RestController @Controller 返回結果的區別

springmvc中返回結果為return中的內容的話可以使用@RestController 或者@[email protected], @RestController註解相當於@ResponseBody + @Controller合在一起的作用。   如果想要頁

SpringBoot 中 @RestController @Controller區別

book 兩種 col ted method ping wire json 區別 1 - 在springboot中,@RestController 相當於 @Controller + @ResponseBody;2 - 即在Controller類中,若想返回jsp或html

@RestController@Controller

[email protected]註解相當於@ResponseBody + @Controller,我們都知道,加上@ResponseBody意思是返回json或xml到前臺頁面,也就是return裡的東西。這時候,即使你在檢視解析器InternalResourceViewRe

restcontrollercontroller區別

知識點:@RestController註解相當於@ResponseBody + @Controller合在一起的作用。 1) 如果只是使用@RestController註解Controller,則Controller中的方法無法返回jsp頁面,或者html,配置的檢視解析器 InternalRe

@RestController與@Controller區別

  @RestController是@ResponseBody + @Controller合體   @ResponseBody:加在方法上、表示返回json格式/xml資料 @Controller:加上mvc中c上面的註解、要想返回資料、要配合檢視解析器&nb

關於directive裡的linkcontroller區別

1、執行順序:先controller後link 2、何時使用controller:一般場景下都不想要使用controller,只需要把邏輯寫在link中就可以了;用controller的場景就是該指令(假設為a)會被其他指令(假設為b)require的時候,這樣就會在b指令

前後端關係,restful風格,restcontrollercontroller區別

restful風格簡單的理解,restful是一種url風格,或者說是規範,在以前的網址中,假定一個業務,取得資料網址為http://test/get ,新增資訊的網址為http://test/post ,類似這樣。但是在restful風格中,取得資料和新增資料的網址均應為h

RestControllerController區別

1) 如果只是使用@RestController註解Controller,則Controller中的方法無法返回jsp頁面,或者html,配置的檢視解析器 InternalResourceViewResolver不起作用,返回的內容就是Return 裡的內容。2) 如果需要返

關於@RestController@Controller

  這兩天在實現返回json資料時遇到的問題,action執行完後預設從url中獲取欄位然後通過檢視解析器去查詢.jsp檔案,然後顯示找不到該檔案。   後來找到了原因:之前使用了註解@controller。而為了返回response物件,應使用@Rest

【spring Boot】Spring中@Controller@RestController之間的區別

處理 public 不同 esp 舉例 rest control tro adding spring Boot入手的第一天,看到例子中的@RestController ............. 相同點:都是用來表示Spring某個類的是否可以接收HTTP請求 不同點:@C

@RestController註解@Controller註解的區別

在學習的過程中發現這個問題,寫篇部落格記錄一下,方便以後查閱。 @RestController註解是@Controller和@ResponseBody註解的結合。 首先說明: @Controller註解表明這是一個控制器類 在方法上加註解@ResquestMapping(v

Spring中@Controller@RestController之間的區別

1. Controller, RestController的共同點      都是用來表示Spring某個類的是否可以接收HTTP請求 2.  Controller, RestController的不同點      @Controller標識一個Spring類是Spring

【死磕springboot2.0】@restcontroller與 @controller區別

@restcontroller *原始碼如下:其包含@Controller 、@ResponseBody * @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Controller

spring boot @Controller與@RestController之間的區別

共同點 都是用來表示Spring某個類是否可以接收HTTP請求。 不同點 @Controller標識一個spring類是Spring MVC controller處理器。 @RestController是@Controller和@ResponseBody的結合體。 @Respon