本文介绍一下在 Spring MVC 中常会使用的注解。
@Controller
& @RequestMapping
@Controller
基于 REST 风格,新增注解:
@RestController
=@Controller
+@ResponseBody
@Controller
作用于类, Controller
负责处理从 DispatcherServlet
分发的请求。
需要注意的是 @Controller
实际是 说明性注解 ,几乎等同于 @Component
,会被 Spring 识别为 bean ,需要配合 @RequestMapping
才能成为真正处理请求的处理器。
@RequestMapping
基于 REST 风格,新增注解:
@GetMapping
,PostMapping
,PutMapping
,DeleteMapping
等。
@RequestMapping
注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上,作用于 Controller
类或方法。
属性 | 说明 |
---|---|
value |
指定请求的实际地址,指定的地址可以是 URI Template 模式。 |
method |
指定请求的method类型, GET / POST / PUT / DELETE 等。 |
consumes |
指定处理请求的提交内容类型(Content-Type),例如: application/json , text/html 。 |
produces |
指定返回的内容类型,仅当 request 请求头中的( Accept )类型中包含该指定类型才返回。 |
params |
指定 request 中必须包含某些参数值是,才让该方法处理。 |
headers |
指定 request 中必须包含某些指定的 header 值,才能让该方法处理请求。 |
@RequestParam
& @PathVariable
两个都是作用于 Controller
方法参数,用于参数绑定。
注解 | 说明 |
---|---|
@RequestParam |
主要用于接受普通的请求参数,非必需。 |
@PathVariable |
取出 URI 模板中的变量作为参数,主要用于处理 RESTful 风格的请求。 |
@RequestParam
1 | GET /mvc/bind/boxed?id=1 |
1 | "/boxed") (value = |
@PathVariable
1 | GET /mvc/bind/boxed/1 |
1 | "/boxed/{id}") (value = |
@RequestBody
& @ResponseBody
注解 | 说明 |
---|---|
@RequestBody |
用于 Controller 的方法参数 ,从 Request 对象的 Body 数据区中取出数据。一般用于解析字符串类型的 Json 信息。 |
@ResponseBody |
用于 Controller 的方法 ,将返回的对象放入到 Response 对象的 Body 数据区中。使用后将不会返回页面而是数据,一般用于非 String 的对象作为 json 数据返回。 |
@ModelAttribute
& @SessionAttributes
这两个注解可以实现在不同的模型(model)和控制器之间共享数据。
注解 | 说明 |
---|---|
@ModelAttribute (若作用于普通方法) |
若用于普通方法,该 Controller 的所有方法在调用前,先执行此方法。 |
@ModelAttribute (若作用于 Controller 的方法参数) |
若作用于 Controller 的方法参数,进行参数绑定,类似 @RequestParam 。 |
@SessionAttributes |
用于类上,将值放到session作用域中。 |