作者:焦鹏666_479 | 来源:互联网 | 2023-09-25 13:54
SpringMVC接收前端传递的参数四种方式@RequestParam注解@PathVariable注解SpringMVC的自动解析参数SpringMVC的@RequestBody
SpringMVC 接收前端传递的参数四种方式
- @RequestParam注解
- @PathVariable注解
- SpringMVC的自动解析参数
- [email protected]
@RequestParam 获取注解
get/post url =>"xx/user?id=1" action =>
public String User( @RequestParams(name="id") Long id ){
}
@RequestParam定义的参数 会自动解析为 方法定义的类型。
@RequestParams(name="id") Long id )(通过postman模拟post请求)
@PathVariable获取注解
get/post url =>"xx/user/1" action =>public String User( @PathVariable(name="id") Long id){}
@PathVariable必须通过正则指定对应的类型 只有当url指定为数字,方法参数定义为数字类型才不会报错。比如:(可以通过其他正则限制url,只有符合条件的url才会映射到对应的action,否则不会找到对应的action)
@RequestMapping("/user/{id:\\d}")
public String User( @PathVariable(name="id") Long id){}
SpringMVC,可以不设置任何注解即可接收参数
比如
@GetMapping("/category")
public String category( Long id) {
System.out.println(id);
return "post/category";
}
可以通过 /category 访问 ,也可以通过 /category?id=1 访问
SpringMVC,也可以自动包装成对象
url /category?title=测试 或者 /category 都能访问到目标资源
@GetMapping("/category")
public String category( MPost post ) {
System.out.println(post.getTitle());
return "post/category";
}
@RequestBody 用来接收本文来源gao([email protected]@#码(网5数组或者复杂对象
(必须将参数放在requestbody中,放在url并不会被解析,哪怕请求方式是post)
url => /category requestbody =>{"id":1}
@PostMapping("/category")
public String category( @RequestBody Post post ) {
System.out.println(post.getTitle());
return "post/category";
}
若为对象数组,将方法参数改为 @RequestBody List post 即可
直接输入 /category并不会找到对应的action
SpringMVC的自动封装(不传参也能进入)
@RequestParam
(必须传参,但可以手动设置为false)
@PathVariable
(符合设定的正则表达式才允许进入,而且不能为空)