参数获取与Servlet资源获取问题(2)

@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 请求头信息到方法入参。

参数获取与Servlet资源获取问题

定义的三个属性和 @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。

参数获取与Servlet资源获取问题

默认值和使用方式和 @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 的结构:

参数获取与Servlet资源获取问题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6618f333a1e38465cd20a24a3f2304dc.html