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里面。


参考

相关推荐