@Controller @ResponseBody @RestController的基本含义与使用方法

  1. @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";
    }
}

  1. @RestController
    只返回对象,并且对象直接以JSON或XML的形式传入HTTP响应中,该情况属于RESTful Web服务,前后端分离场景。
@Controller
public class HelloController {
    @PostMapping("/hello")
    @ResponseBody
    public Person greeting(@RequestBody Person person) {
    	//返回json格式的Person对象
        return person;
    }

}
  1. @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;
    }

}
发布了92 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41885819/article/details/103497820