Springmvc控制器中常用注解总结
每次用到的时候都需要查阅资料,现在整理下,方便记忆
1 @Controller
标识该类是一个控制器,Spring MVC会自动扫描标注了这个注解的类。
2 @RequesMapping
@RequestMapping将请求映射到控制器类和控制器中的方法上。通过匹配URL,HTTP method,请求参数,头和媒体类型,我们可以设置该请求的多种属性。同时,springmvc中还提供具体请求方法的映射方法,如下:
GetMapping
PostMapping
PutMapping
从客户端向服务器传送的数据取代指定的内容,即更新内容DeleteMapping
请求服务器删除指定的页面PatchMapping
用来更新局部资源
3 @PathVariable
从请求的URI变量中获取值,使用方法如下:
@GetMapping("/owners/{ownerId}/pets/{petId}") public Pet findPet(@PathVariable Long ownerId, @PathVariable Long petId) { //... }
也可以获取类上声明的URI变量,如下:
@Controller @RequestMapping("/owners/{ownerId}") public class OwnerController { @GetMapping("/pets/{petId}") public Pet findPet(@PathVariable Long ownerId, @PathVariable Long petId) { // ... } }
需要强调的是,如果一个控制器类中存在多个URI变量的话,声明的变量名字不能重复!
4 @RequestParam
用来接收ContentType为x-www-form-urlencoded的请求参数,请求体格式为a=xxx&b=xxx
详解
5 @RequestBody
放在参数前,表示参数从request body中获取,而不是从地址栏获取,所以这肯定是接收一个POST请求的非a=b格式的数据,即Content-Type不为application/x-www-form-urlencoded类型的内容。
@RequestParam和@RequestBody的区别
- @Requestparam用来接收ContentType为x-www-form-urlencoded的请求参数,请求体格式为a=xxx&b=xxx
- @Requestbody需要自定义解析器来解析请求体内容。比如application/json,前端需要把参数转成json格式,后端一般用jackson来解析。当然你也可以自定义格式,只要你能解析就行。
6 @ResponseBody
@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。
作用:
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
何时使用
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用
@RequestBody
和@ResponseBody
的区别:
@ResponseBody
作用:@ResponseBody注解用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端。
@RequestBody
作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容(json数据)转换为java对象并绑定到Controller方法的参数上。
详细介绍,有实际的例子共参考
7 @RestController
这个是Controller和ResponseBody的组合注解,表示@Controller标识的类里面的所有返回参数都放在response body里面。
参考
相关推荐
@RequestBody注解实现接收http请求的json数据,将json数据转换为java对象进行绑定。加上@ResponseBody注解,就不会走视图解析器,不会返回页面,目前返回的json数据。