之前在 SpringBoot源码解析-controller层参数的封装 中已经分析过springboot中controller层参数封装的原理,但是工作中毕竟不会一直有时间给你慢慢分析,有时候快速查询也是很必要的。所以今天就总结一下controller层哪些参数封装注解的含义,以及使用,方便以后快速查阅。
该注解主要用法有两种,示例如下
http://127.0.0.1:8080/hello?id=123 @GetMapping("hello") public String hello(@RequestParam("id") String id){ log.info("[{}]",id); return "hello"; } id = 123 复制代码
http://127.0.0.1:8080/hello?id=123&name=liuyu @GetMapping("hello") public String hello(@RequestParam Map<String,String> value){ System.out.println(value); return "hello"; } value = {id=123, name=liuyu} 复制代码
如果我们想获取全部的get请求值,可以不明确指定RequestParam注解的value,并且使用map来接收参数。这样我们就可以得到全部的请求值。
该注解主要用法有两种,示例如下
http://127.0.0.1:8080/hello/liuyu/qwert @GetMapping("hello/{id}/{name}") public String hello(@PathVariable("id") String id,@PathVariable("name") String name){ System.out.println(value); System.out.println(name); return "hello"; } id = liuyu ,name = qwert 复制代码
http://127.0.0.1:8080/hello/liuyu/qwert @GetMapping("hello/{id}/{name}") public String hello(@PathVariable Map<String,String> map){ System.out.println(map); return "hello"; } map = {id=liuyu, name=qwert} 复制代码
如果要使用该注解需要开启配置
@Component public class GlobalWebMvcConfigurer implements WebMvcConfigurer { @Override public void configurePathMatch(PathMatchConfigurer configurer) { UrlPathHelper urlPathHelper=new UrlPathHelper(); urlPathHelper.setRemoveSemicolonContent(false); configurer.setUrlPathHelper(urlPathHelper); } } 复制代码
该注解主要用法有两种,示例如下
http://127.0.0.1:8080/hello/liu;value=123 @GetMapping("hello/{id}") public String hello(@PathVariable(name = "id") String name,@MatrixVariable(name = "value") String value){ System.out.println(name); System.out.println(value); return "hello"; } id = liu value = 123 复制代码
http://127.0.0.1:8080/hello/liu;value=123;name=qwe @GetMapping("hello/{id}") public String hello(@PathVariable(name = "id") String name,@MatrixVariable Map<String,String> value){ System.out.println(name); System.out.println(value); return "hello"; } id = liu value = {value=123, name=qwe} 复制代码
post 请求,将请具体封装成实体bean
post请求体 { "name":"liu", "id":"123" } @PostMapping("hello") public String hello(@RequestBody User user){ System.out.println(user); return "hello"; } user(id=123, name=liu) 复制代码
获取请求头的字段,同样的有获取单个请求头和获取全部请求头的两种用法。
获取cookie中的键值对的值。
请求头添加 Cookie:value=liuyu @GetMapping("hello") public String hello(@CookieValue(name = "value") String user){ System.out.println(user); return "hello"; } user = liuyu 复制代码