SpringMVC相关注解
GitHub:https://github.com/JDawnF/learning_note
@Controller
@Controller
注解,它将一个类标记为 Spring Web MVC 控制器 Controller 。
@RestController 和 @Controller 的区别
@RestController
注解,在 @Controller
基础上,增加了 @ResponseBody
注解,更加适合目前前后端分离的架构下,提供 Restful API ,返回例如 JSON 数据格式。当然,返回什么样的数据格式,根据客户端的 "ACCEPT"
请求头来决定。
@RequestMapping
@RequestMapping
注解,用于将特定 HTTP 请求方法映射到将处理相应请求的控制器中的特定类/方法。此注释可应用于两个级别:
-
类级别:映射请求的 URL。
-
方法级别:映射 URL 以及 HTTP 请求方法。
@RequestMapping 和 @GetMapping 区别
-
@RequestMapping
可注解在类和方法上;@GetMapping
仅可注册在方法上。 -
@RequestMapping
可进行 GET、POST、PUT、DELETE 等请求方法;@GetMapping
是@RequestMapping
的 GET 请求方法的特例,目的是为了提高清晰度。
返回 JSON 格式使用的注解:
可以使用 @ResponseBody 注解,或者使用包含 @ResponseBody
注解的 @RestController 注解。
当然,还是需要配合相应的支持 JSON 格式化的 HttpMessageConverter 实现类。例如,Spring MVC 默认使用 MappingJackson2HttpMessageConverter 。
@PathVariable 注解与@RequestParam的区别
@PathVariable
注解,是 Spring MVC 中有用的注解之一,它允许您从URI 读取值,比如查询参数。它在使用 Spring 创建 RESTful Web 服务时特别有用,因为在 REST 中,资源标识符是 URI 的一部分。
@RequestParam注解和@PathVariable注解的区别,从字面上可以看出前者是获取请求里边携带的参数;后者是获取请求路径里边的变量参数。
(例如:127.0.0.1/user/{userId}?userName=zhangshan,userId是路径上的变量,userName才是请求参数信息)
1.@RequestParam注解
@RequestParam有三个参数:
value:参数名;
required:是否必需,默认为true,表示请求参数中必须包含该参数,如果不包含抛出异常。
defaultValue:默认参数值,如果设置了该值自动将required设置为false,如果参数中没有包含该参数则使用默认值。
示例:@RequestParam(value = "userId", required = false, defaultValue = "1")
2.@PathVariable注解
当使用@RequestMapping URI占位符映射时,Url中可以通过一个或多个{xxxx}占位符映射,通过@PathVariable可以绑定占位符参数到方法参数中。
例如:@PathVariable("userId") Long userId,@PathVariable("userName") String userName
(注:Long类型可以根据需求自己改变String或int,Spring会自动做转换)
@RequestMapping(“/user/{userId}/{userName}/query")
参照 《Spring MVC 的 @RequestParam 注解和 @PathVariable 注解的区别》 。
@RequestBody
@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。
前端通过post传数据过来,要用RequestBody注解。