1.在springboot中有许多的参数注解,这里举例几个常用的注参数解。
- @PathVariable:路径变量
- @RequestHeader:获取请求头
- @RequestParam:获取请求参数
- @CookieValue:获取cookie值
- @RequestBody:获取请求体
- @RequestAttribute:获取request域属性
2.话不多说,直接上代码看看如何使用以上注解
1.路径变量:路径变量使用@PathVariable注解,@PathVariable注解可以一个一个参数来接收,也可以直接使用一个map来进行接收,注意写法的区分。
@RestController
public class ParamController {
/*路径变量*/
@GetMapping("/pathValue/{id}/{name}")
public Map pathValue(@PathVariable("id") Integer id,
@PathVariable("name") String name,
@PathVariable Map pv){
Map map=new HashMap<String,Object>();
map.put("id",id);
map.put("name",name);
map.put("pv",pv);
return map;
}
}
<!--创建前端进行测试-->
<a href="pathValue/50/小猪">路径变量</a>
可以看到使用map和一个一个的传参数,得到的结果是一样的。
2.获取请求头:获取请求头使用@RequestHeander注解,有不了解请求头的小伙伴可以去HTTP请求报文了解一下什么是请求头,请求头也可以使用map来一次性获取全部的参数。
/*获取请求头*/
@GetMapping("/heand")
public Map getHeand(@RequestHeader("User-Agent") String userAgent,
@RequestHeader Map ua){
Map map=new HashMap<String,Object>();
map.put("userAgent",userAgent);
map.put("ua",ua);
return map;
}
创建一个html文件测试一下
<!--获取请求头-->
<a href="/heand">获取请求头</a></br>
可以看到使用map和使用一个参数其实都可以获取到对应的请求头数据。
3.获取请求参数:获取请求参数使用@RequestParam注解,参数不必多说大家应该很了解,就是跟在连接后面使用问号隔开的参数。和上面的一样,请求参数也可以使用map来统一获取。
/*获取请求参数*/
@GetMapping("/param")
public Map getParam(@RequestParam("id") String id,
@RequestParam("name") String name,
@RequestParam Map rp){
Map map=new HashMap<String,Object>();
map.put("id",id);
map.put("name",name);
map.put("rp",rp);
return map;
}
创建一个html测试一下
<!--获取请求参数-->
<a href="/param?id=001&name=小猪">获取请求参数</a></br>
可以看到和上面的一样,map和单个获取的结果也是一样的。
4.获取cookie值:不知道什么是cookie的小伙伴可以去Cookie介绍去了解了解。cookie就不能用map来获取了,但是cookie有专门的实体类,实体类里面可以获取到很多信息,话不多说直接上代码。
/*获取cookie值*/
@GetMapping("/cookie")
public Map getCookie(@CookieValue("_seeyon") String _seeyon,
@CookieValue("_seeyon") Cookie cookie){
Map map=new HashMap<String,Object>();
map.put("seeyon",_seeyon);
map.put("cookie",cookie.getName()+"===>"+cookie.getValue());
return map;
}
简单创建一个html测试一下
<!--获取Cookie-->
<a href="/cookie">获取Cookie</a>
5.获取请求体:不了解请求体的可以去这里了解了解HTTP请求报文,请求体只有post请求才能拥有,get请求是没有请求体的。请求体的获取相对简单,一个参数就可以获取到。
/*获取请求体*/
@PostMapping("/body")
public Map getBody(@RequestBody String content){
Map map=new HashMap<String,Object>();
map.put("content",content);
return map;
}
前端可以通过Form标签来创建请求体,具体可以去前端发送请求体的几种方式 了解一下,创建一个html测试一下
<!--获取请求体-->
<form action="/body" method="post">
账号:<input type="text" name="user">
密码:<input type="password" name="pwd">
<input type="submit" value="登入">
</form>
6.获取request域属性:获取request域属性使用@RequestAttribute注解,该注解可以获取到传过来的request域里面的数据。
/*获取request域属性*/
@GetMapping("/forWard")
public String getForword(HttpServletRequest request){
request.setAttribute("id",123);
request.setAttribute("name","小猪");
return "forward:/ra";
}
@ResponseBody
@GetMapping("/ra")
public Map getRa(@RequestAttribute("id") Integer id,
@RequestAttribute("name") String name){
Map map=new HashMap<String,Object>();
map.put("id",id);
map.put("name",name);
return map;
}
这里直接用两个接口来测试