作者:yun悠然_434 | 来源:互联网 | 2023-09-13 10:16
- @Controller
单据使用@Controller不加@ResponseBody,用于返回一个视图,该情况属于比较传统的Spring MVC应用,前后端不分离的场景。
Spring回去resources/templates目录下查找hello.html,并且携带参数
@Controller
public class HelloController {
@GetMapping("/hello")
public String greeting(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
model.addAttribute("name", name);
return "hello";
}
}
- @RestController
只返回对象,并且对象直接以JSON或XML的形式传入HTTP响应中,该情况属于RESTful Web服务,前后端分离场景。
@Controller
public class HelloController {
@PostMapping("/hello")
@ResponseBody
public Person greeting(@RequestBody Person person) {
//返回json格式的Person对象
return person;
}
}
- @Controller + @ResponseBody
返回JSON或XML形式数据;在Spring4之前开发RESTful Web服务,需要使用@Controller + @ResponseBody 注解使用;在Spring4之后,使用@RestController即可
so:@Controller + @ResponseBody在功能层面上等于@RestController
@RestController
public class HelloController {
@PostMapping("/hello")
public Person greeting(@RequestBody Person person) {
//返回json格式的Person对象
return person;
}
}