@RequestMapping("/testRequestParam2") public String testRequestParam02(@RequestParam("userName") List<String> userNames) { System.out.println("userNames:" + userNames); return "success"; }
控制台输出:
userNames:[jack, lucy]
(3)请求为:<a href="testRequestParam4?userName=jack&age=23">test request param4</a>
handler 方法:
@RequestMapping("/testRequestParam4") public String testRequestParam4(@RequestParam Map<String, String> map) { System.out.println("map:" + map); return "success"; }
控制台输出:
map:{userName=jack, age=23}
主要就分为这三种情况,其中第一种最为常用,第二种和第三种很少能想到,若能想到的话,能为我们开发节省不少时间。
3.@RequestHeader
官方文档中是这样描述的:
Annotation which indicates that a method parameter should be bound to a web request header.Supported for annotated handler methods in Servlet and Portlet environments.
和 @RequestParam 描述类似,只不过绑定的是 web 请求头信息到方法入参。
定义的三个属性和 @RequestParam 一样,默认值和使用的方法也一样。由于用的比较少,这里只做一个例子说明:
请求:<a href="https://www.linuxidc.com/testRequestHeader">test request header</a>
handler 方法:
@RequestMapping("/testRequestHeader") public String testRequestHeader(@RequestHeader(value = "Accept", required = false) String accept) { System.out.println("accept:" + accept); return "success"; }
控制台输出:
accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
4.@CookieValue
官方文档描述:
Annotation which indicates that a method parameter should be bound to an HTTP cookie.Supported for annotated handler methods in Servlet and Portlet environments.
绑定一个 http cookie 到方法的入参,其中 value 属性表明要入参的 cookie 的 key。
默认值和使用方式和 @RequestParam 类似。
例子:
请求:<a href="https://www.linuxidc.com/testCookieValue">test cookie value</a>
handler 方法:
@RequestMapping("/testCookieValue") public String testCookieValue(@CookieValue(value = "JSESSIONID", required = false) String sessionId) { System.out.println("sessionId:"+sessionId); return "success"; }
控制台输出:
sessionId:9D16BDF7063E1BFD9A0C052F1B109A0D
5.绑定请求参数到方法入参处的 bean 对象。
先看两个例子:
(1)绑定请求参数到 bean
请求:包括 get 和 post 请求方式提交的情况。
<a href="testBean?personName=jack&age=23">test bean</a> <form action="testBean" method="post"> <label> personName:<input type="text" name="personName"/> </label> <label> age:<input type="text" name="age"/> </label> <input type="submit" value="submit"/> </form>
handler 方法:
@RequestMapping("/testBean") public String testBean(Person person) { System.out.println(person);//Person{personName='jack', age='23'} return "success"; }
发现不论是通过 get 方式,还是post 方式,都可以将对应的请求参数注入到对应的 bean 中。
(2)绑定请求参数到级联的 bean
bean 的结构: