原創聲明:本文為作者原創,未經允許不得轉載,經授權轉載需注明作者和出處
上章講到了@RestController注解,該注解是對@Controller注解的增強,處理標記控制器,還可以讓類下所有的方法都返回json格式的數據。有人會問了:我并不是控制器下每個方法都要返回json啊,我有可能要返回渲染頁面啥的怎么辦?不用擔心,接下來要講到的@ResponseBody就是解決方案。
在上章基礎之上,我們改回@Controller,然后在類上加上一個@ResponseBody注解。
@Controller
@RequestMapping(value = "/json")
@ResponseBody
public class JsonController {
@RequestMapping(value = "/test")
public String jsonTest(){
return "dayaoguai";
}
}
運行效果一樣
我們再改成注解到類上面,為了有區別,我們再寫一個同樣功能的:
@Controller
@RequestMapping(value = "/json")
public class JsonController {
@RequestMapping(value = "/test")
@ResponseBody
public String jsonTest(){
return "dayaoguai";
}
@RequestMapping(value = "/test1")
public String jsonTest1(){
return "dayaoguai";
}
}
訪問test:
訪問test1:
由上述實驗可以看出我們的@ResponseBody注解的作用就是返回json格式的內容。而@RestController其實就是@Controller和@ResponseBody的結合。我們來對比一下@Controller和@RestController的源碼:
@RequestMapping(value = "/jsonParam",method = RequestMethod.POST)
public void jsonParam(String name){
System.out.println(name);
}
我們用poster先用普通方式訪問一下,傳參數name=dayaoguai:@RequestMapping(value = "/jsonParam",method = RequestMethod.POST)
public void jsonParam(@RequestBody String name){
System.out.println(name);
}
總結:
老規矩,獻上源碼:https://share.weiyun.com/93cc277170716b0c8f9dc36bbf9f30de