标签:02 返回 请求 SpringMVC 菜鸟 注释 ResponseBody Controller 路由
1. 运用于控制层(controller)的一些注释
首先给出整体的列表(有些我会说,有些我不会)
应用场景 | 注解 | 注解说明 |
---|---|---|
处理请求 | @Controller | 处理 Http 请求 |
处理请求 | @RestController | @Controller 的衍生注解 |
路由请求 | @RequestMapping | 路由请求 可以设置各种操作方法 |
路由请求 | @GetMapping | GET 方法的路由 |
路由请求 | @PostMapping | POST 方法的路由 |
路由请求 | @PutMapping | PUT 方法的路由 |
路由请求 | @DeleteMapping | DELETE 方法的路由 |
请求参数 | @PathVariable | 处理请求 url 路径中的参数 /user/{id} |
请求参数 | @RequestParam | 处理问号后面的参数 |
请求参数 | @RequestBody | 请求参数以json格式提交 |
返回参数 | @ResponseBody | 返回 json 格式 |
来源:https://www.cnblogs.com/fishpro/p/spring-boot-study-restcontroller.html
2. @Controller 与 @RestController
首先讲一个所有人都知道的结论:@RestController = @Controller + @ResponseBody。
在注释的代码中@RestController是被@Controller 和 @ResponseBody 同时注释的。因此不能简单的理解@RestController 是 @Controller 或者 @ResponseBody的子类。而是同时拥有而这两个功能的结合型的注释。
下面我们就先分开讲然后合起来讲。
2.1 @Controller
spring mvc 开发中最常用的注释之一。spring在运行后会扫描所有包、子包和里面的子类,并读取各种注释。而@Controller的作用就是让spring把该类注入IOC容器中,作为Spring的Bean来管理。同时配合其他注释(例如@RequestMapping),可以让接口定义更简单(例如,多个具有相似性的接口可以放在同一个类中,映射路径的规定也会规范)。
此外,在@controller注解中,如果返回的是字符串,或者是字符串匹配的模板名称,即直接渲染视图,跳转到jsp、ftl、html等模版页面。
*在下属方法名不加其他注释的情况下只能返回String即页面(待进一步查询)
**方法返回不是string时会不会报错待查证
@Controller
public class ExampleController {
@RequestMapping("/example")
public String exampleMethod(@Param("example") String param){
return "success"; //此时返回的时页面名为“success”的页面。
}
}
2.2 @ResponseBody
@ResponseBody的主要含义是让方法返回数据而不像@Controller那样直接返回界面。
被@ResponseBody注释的方法即使返回类型是String,也只是返回String类型的数据,而不是页面。默认情况下,使用@ResponseBody返回的数据只能是String类型,其它类型返回时会出现异常(似乎是因为前端接受的数据类型是JSON,通常的后端返回值类型在不做处理的情况下只有String能被前端接受)。这种时候可以用类型转换器去解决Java对象和JSON对象不匹配的问题。这里不再赘述。
2.3 @RestController
至此就明白了该注释的作用了。在实现@Controller的注入功能前提下,让该类里的所有方法返回的是JSON数据。这样就不需要一个个方法上去加@ResponseBody。
标签:02,返回,请求,SpringMVC,菜鸟,注释,ResponseBody,Controller,路由 来源: https://blog.csdn.net/InnnnnnnnnnNoVation/article/details/120374252
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。