1.springmvc注解
1. @RestController、@ResponseBody、@Controller
@Controller是@Component注解的一个延伸,Spring会自动扫描并配置被该注解标注的类,是一个controller层必需的注解。@ResponseBody会自动将控制器中方法的返回值写入到HTTP响应中,更实际的说@ResponseBody的作用其实是将java对象转为json格式的数据,不再走视图解析器,直接返回到response对象中
@RestController相当于@Controller和@ResponseBody,最常使用,上面两个就基本用不到了。
2. @RequestMapping、@GetMapping、@PostMapping
@RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射,可以注解在类或方法上。
拥有6个配置属性:
- value:映射的请求URL或者其别名
- method:兼容HTTP的方法名
- params:根据HTTP参数的存在、缺省或值对请求进行过滤
- headers:根据HTTP Header的存在、缺省或值对请求进行过滤
- consumes:设定在HTTP请求正文中允许使用的媒体类型
- products:在HTTP响应体中允许使用的媒体类型
@GetMapping和@PostMapping是省略method的写法,推荐使用。
例:
@RestController
@RequestMapping("/person")
public class UserController {
@RequestMapping(value = "/query", method = RequestMethod.GET)
public String query(){
return "11";
}
@GetMapping(value = "/query")
public String getUser(){
return "11";
}
@PostMapping(value = "/add")
public String addUser(){
return "11";
}
}
3.@RequestBody、@PathVariable、@RequestParam
@RequestBody它将方法参数绑定到web请求对象的body中(基本是用于post请求),请求的body参数是通过HttpMessageConverter解析,根据请求主体中的参数名与对象的属性名进行匹配并绑定值。此外,还可以通过@Valid注解对请求主体中的参数进行校验。下面是一个使用@RequestBody的示例:
@RestController
@Validated
public class UserController {
@PostMapping(value = "/add")
public BaseResponse addUser(@Validated @RequestBody UserAddDto addDto) {
return new BaseResponse<>();
}
}
@PathVariable注解是将方法中的参数绑定到请求URI中的模板变量上,模板变量名需要使用“{ }”进行包裹,如果方法的参数名与URI模板变量名一致,则在@PathVariable中就可以省略别名的定义。
@RequestParam注解用于将方法的参数与Web请求的传递的参数进行绑定,特别的get方式的请求中,可以用一个dto对象来接收参数,前面不加@RequestParam即可。
@GetMapping(value = "/query/{id}")
public BaseResponse