@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) {
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) {
return person;
}
}