作用:相當於@Controller+@Responsebody,但使用@RestController這個注解,就不能返回jsp,html頁面,視圖解析器無法解析jsp,html頁面
博客參考:https://www.cnblogs.com/clwydjgs/p/9255046.html
補充:前后端數據交互形式(以Get方式為例)
1、不攜帶參數:
@Controller @RequestMapping("/user") public class UserController { /** * 無參數請求 * @param request * @return */ //http://localhost:8080/user/ @ResponseBody @RequestMapping(produces = "text/plain;charset=UTF-8") public String user(HttpServletRequest request){ //url:http://localhost:8080/usercan access! return "url:"+request.getRequestURL()+" can access!"; } }
2、將參數嵌套在路徑中:使用@PathVariable獲取值
@Controller @RequestMapping("/user") public class UserController { /** * 參數嵌套在請求路徑中 * @param str * @param request * @return */ //http://localhost:8080/user/user2/%E6%9D%A8%E6%B6%A6%E6%98%A5 @ResponseBody @RequestMapping(value = "/user2/{str}",produces = "text/plain;charset=UTF-8") public String pathVar(@PathVariable String str,HttpServletRequest request){ //url:http://localhost:8080/user/user2/%E6%9D%A8%E6%B6%A6%E6%98%A5can access,str is楊潤春 return "url:"+request.getRequestURL()+" can access,str is"+str; } }
3、參數以key=value形式存在於請求路徑中,控制器中的方法自動進行解析。包括單一變量和Bean對象
/** * url單獨攜帶參數 * @param id * @param request * @return */ //http://localhost:8080/user/rp?id=10000 @ResponseBody @RequestMapping(value = "/rp",produces = "text/plain;charset=UTF-8") public String requestParam(long id,HttpServletRequest request){ //url:http://localhost:8080/user/rpcan access,userID is10000 return "url:"+request.getRequestURL()+"can access,userID is"+id; } /** * 接收key=value鍵值對,自動封裝為object,然后再轉換為字符串類型的json返回 * @param user * @param request * @return */ //http://localhost:8080/user/json?name=%E6%9D%A8%E6%B6%A6%E6%98%A5&password=123456 @ResponseBody @RequestMapping(value = "/json",produces = "application/json;charset=UTF-8") public String passObj(UserBean user,HttpServletRequest request){ Gson gson = new Gson(); //{"name":"楊潤春","password":"123456"} return gson.toJson(user); }
4、后端返回數據:使用@RequestMapping中的屬性 produces 指定返回的格式。
(1)produces= "text/plain;charset=UTF-8":返回文本格式
(2)produces = "application/json;charset=UTF-8":返回json格式
(3)produces = "application/xml;charset=UTF-8":返回xml格式
/**
* url單獨攜帶參數
* @param id
* @param request
* @return
*/
//http://localhost:8080/user/rp?id=10000
@ResponseBody
@RequestMapping(value = "/rp",produces = "text/plain;charset=UTF-8")
public String requestParam(long id,HttpServletRequest request){
//url:http://localhost:8080/user/rpcan access,userID is10000
return "url:"+request.getRequestURL()+"can access,userID is"+id;
}
/**
* 接收key=value鍵值對,自動封裝為object,然后再轉換為字符串類型的json返回
* @param user
* @param request
* @return
*/
//http://localhost:8080/user/json?name=%E6%9D%A8%E6%B6%A6%E6%98%A5&password=123456
@ResponseBody
@RequestMapping(value = "/json",produces = "application/json;charset=UTF-8")
public String passObj(UserBean user,HttpServletRequest request){
Gson gson = new Gson();
//{"name":"楊潤春","password":"123456"}
return gson.toJson(user);
}