原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处
上章讲到了@RestController注解,该注解是对@Controller注解的增强,处理标记控制器,还可以让类下所有的方法都返回json格式的数据。有人会问了:我并不是控制器下每个方法都要返回json啊,我有可能要返回渲染页面啥的怎么办?不用担心,接下来要讲到的@ResponseBody就是解决方案。
在上章基础之上,我们改回@Controller,然后在类上加上一个@ResponseBody注解。
@Controller
@RequestMapping(value = "/json")
@ResponseBody
public class JsonController {
@RequestMapping(value = "/test")
public String jsonTest(){
return "dayaoguai";
}
}
运行效果一样
我们再改成注解到类上面,为了有区别,我们再写一个同样功能的:
@Controller
@RequestMapping(value = "/json")
public class JsonController {
@RequestMapping(value = "/test")
@ResponseBody
public String jsonTest(){
return "dayaoguai";
}
@RequestMapping(value = "/test1")
public String jsonTest1(){
return "dayaoguai";
}
}
访问test:
访问test1:
由上述实验可以看出我们的@ResponseBody注解的作用就是返回json格式的内容。而@RestController其实就是@Controller和@ResponseBody的结合。我们来对比一下@Controller和@RestController的源码:
@RequestMapping(value = "/jsonParam",method = RequestMethod.POST)
public void jsonParam(String name){
System.out.println(name);
}
我们用poster先用普通方式访问一下,传参数name=dayaoguai:@RequestMapping(value = "/jsonParam",method = RequestMethod.POST)
public void jsonParam(@RequestBody String name){
System.out.println(name);
}
总结:
老规矩,献上源码:https://share.weiyun.com/93cc277170716b0c8f9dc36bbf9f30de