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

@RestController和@Controller的區別

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

@Controller
@RequestMapping(value = "/test",method = RequestMethod.GET)
public class TestController {

    @RequestMapping(value = "/a",method = RequestMethod.GET)
    public String probe(){
        System.out.println("good");
        return "success";
    }
}

實際上以上程式碼,是可以在控制檯打印出good來的,但是postman中卻顯示了404

{
    "timestamp": 1539250958530,
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/test/a"
}

原因就是沒有success.jsp頁面,所以報錯。解決辦法:在RequestMapping中加上@ResponseBody就可以解決。 當然,你在類上使用@RestController也解決了這個問題,返回了success.

@RestController註解,相當於@

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