SpringMVC中常见用于参数位置的注解
1、@RequestParam
:该注解的作用是将请求中指定名称的参数进行获取,可以指定该参数是否为必须,可以是get请求,也可以是post请求,可以该注解可以省略。
省略@RequestParam注解和不省略@RequestParam注解的区别在于:如果需要获取的参数是java自带的类型,省略和不省略就没啥区别,如果是我们在定义的类型,如果我们省略@RequestParam注解,就会将spring就会将参数列表对象中的对象的属性进行赋值,最终封装成为一个我们需要的对象,如果我们添加了@ReqeustParam注解,Spring将尝试从HTTP请求中解析对应的参数,并将其绑定到该方法参数上。也就是说,使用@RequestParam注解只能获取一些常见的类型,例如String、Long类型等,如果不使用注解Spring会默认将方法参数名称与HTTP请求参数名称进行匹配,然后将请求参数的值注入到方法参数中。当然,如果参数名不一致,也不会进行赋值,尽管没有进行赋值,但是任然会返回该类型的一个对象。
实例:
@GetMapping("/addSuccess")
public String goToSuccess(@RequestParam(name = "skuId") Long skuId, Model model){
CartItem cartItem = cartService.getItemBySkuId(skuId);
model.addAttribute("cartItem",cartItem);
return "success";
}
2、@RequestBody
:该注解的作用是将前端传给后端的JSON格式的请求封装为指定的对象类型,因为get请求没有请求体,所以@RequestBody只适用于POST请求
实例:
@ResponseBody
@PostMapping("/test")
public String test(@RequestBody TestObejct testObejct){
return ""+testObejct;
}
3、@CookieValue
:获取指定cookie的cookie的值
@ResponseBody
@PostMapping("/test")
public String test(@CookieValue("cookieName") String s){
return s;
}
4、@PathVariable
:该注解的作用是将@RequestMapping注解中的请求映射中的restful风格的参数进行获取
@ResponseBody
@PostMapping("/test/{param}")
public String test(@PathVariable("param") String param){
return param;
}