作用:相当于@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);
}