@RestController和@Controller的區別
阿新 • • 發佈:2018-12-14
使用@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頁面