本文介绍常见参数处理器的使用场景
class Controller {
public void test(
@RequestParam("name1") String name1, // name1=张三
String name2, // name2=李四
@RequestParam("age") int age, // age=18
@RequestParam(name = "home", defaultValue = "${JAVA_HOME}") String home1, // spring 获取数据
@RequestParam("file") MultipartFile file, // 上传文件
@PathVariable("id") int id, // /test/124 /test/{id}
@RequestHeader("Content-Type") String header,
@CookieValue("token") String token,
@Value("${JAVA_HOME}") String home2, // spring 获取数据 ${} #{}
HttpServletRequest request, // request, response, session ...
@ModelAttribute("abc") User user1, // name=zhang&age=18
User user2, // name=zhang&age=18
@RequestBody User user3 // json
) {
}
}
@RequestParam,@PathVariable,@ModelAttribute都是从url路径拿参数,区别在于:
(1)@PathVariable 通过占位符获取特定位置的请求参数值并赋值给方法
(2)@RequestParam 通过key=value的方式将请求参数值赋值给方法
(3)@ModelAttribute 通过key=value的方式将请求参数值赋值给方法,并且可以使用1或多个key=value映射 来构造 对象。