1.@RequestBody: 作用于方法参数。该注解标注的参数将接收http请求体中的数据。注解唯一参数值boolean类型的required,表示。body是不是必须的,默认为true,若不传body,会有异常;若为false,这body可不传。常用来使用对象类型的参数来接收body中的json信息或者用String类型接收body中其他格式的信息。
2.@ResponseBody: 作用于类或方法。SpringMVC发现这个方法上有@ResponseBody这个注解,并且方法返回值是一个普通的java对象的时候,会将该类的全部方法(标注于类时)/标注该注解的方法的返回值使用Jackson(需要添加Jackson依赖)转换为json格式的字符串,然后输出到客户端。
3.@Controller: 作用于类。是@Component的一种,被标注的类将作为Bean被注册到IoC容器中。
4.@RequestMapping: 作用于类或者方法。请求映射,将符合规范的请求映射到该注解标注类或者方法进行处理。当springmvc容器启动时,会扫描标注有@Controller注解的类,将这些Controller中标注有@RequestMapping的方法收集起来,得到一个Map<@RequestMapping,Method>(@RequestMapping和方法的映射),当一个请求到达DispatcherServlet的时候,其内部会根据请求的信息(url、参数、header、请求的类型【通过头中的Content-type指定】、可以接受的类型【可以通过头中的Accept指定】)去这个Map中和@RequestMapping中的规则进行匹配,从而得到可以处理这个请求的方法,然后进行调用,所有的@RequestMapping都匹配失败的时候,会返回404。
@RequestMapping支持6种规则,这些规则都是通过@RequestMapping中的属性进行配置的,多个属性的值是AND关系。
| 属性 | 多个值之间的关系 | 说明 |
|---|---|---|
| value、path | OR | 限制url |
| header | AND | 限制请求头 |
| params | AND | 限制请求的参数 |
| method | OR | 限制http请求的method |
| consumes | OR | 限制Content-Type的类型(客户端发送数据的类型) |
| produces | OR | 限制Aceept的类型(客户端可接受数据的类型) |
| 注解 | 相当于 |
|---|---|
| @PostMapping | @RequestMapping(method=RequestMethod.POST) |
| @GetMapping | @RequestMapping(method=RequestMethod.GET) |
| @DeleteMapping | @RequestMapping(method=RequestMethod.DELETE) |
| @PutMapping | @RequestMapping(method=RequestMethod.PUT) |
5.@RequestParam: 作用于方法参数。用于接收表单中的请求数据,当表单中提交的参数名和方法参数名不同时,可以用该注解标注,将表单提交的参数名设置成与方法参数相同的名称,让方法成功接收参数。- @RequestParam注解用来标注在控制器方法的参数上,springmvc从request中获取请求的值赋值给方法的参数
- @RequestParam指定name时,可以获取request中指定参数的值,相当于request.getParameter(name)或request.getParameters(name)
- @RequestParam未指定name,参数类型为:Map<String,String>时,用来接收request中所有参数的值,Map中key为参数名称,value为参数的值
- @RequestParam未指定name,参数类型为MultiValueMap<String, String>时,用来接收request中所有参数的值,key为请求中的参数名称,value为值的集合List
6.@PathVariable: 作用于方法参数,用于接收url中的动态参数。动态url:url中可以使用{变量名称}来表示动态的部分,{}包裹的部分可以替换为任意内容。
7.@RestController: 作用于类,相当于@Controller+@ResponseBody。
8.@ControllerAdvice和@ExceptionHandle: 分别作用于类和方法,用于做全局异常处理。@ControllerAdvice是对Controller的功能进行增强,用来集中处理Controller的所有异常。@ExceptionHandler这个注解有个value属性,用来指定匹配的异常类型,当springmvc捕获到控制器异常后,会和这个异常类型进行匹配,匹配成功了,将调用@ExceptionHandler标注的方法;如果未指定value的值,表示匹配所有类型的异常。
9.@RestControllerAdvice =@ControllerAdvice+@ResponseBody,返回json数据格式。
10.@EnableWebMvc 注解,用来起来springmvc注解配置功能,有了这个注解,springmvc容器才会自动调用WebMvcConfigurer接口中的方法。
11.@RequestHeader: 可以用来标注在接口的参数上,用来获取HTTP请求header中的值。
12.@CookieValue: 该注释指示应将方法参数绑定到HTTP cookie。
方法参数可以声明为javax.servlet.http.Cookie类型,也可以声明为Cookie值类型(String、int等)。
13.@RequestAttribute: 用来标注在接口的参数上,参数的值来源于request作用域。
14.@SessionAttribute: 用来标注在接口的参数上,参数的值来源于session作用域
15.@CrossOrigin: 作用于类或方法,支持跨域访问。