一、上一博文我们讲了SpringMVC中的客户端到服务器端的请求映射机制,今天我们将继续研究在SpringMVC的控制器方法中怎样获取请求中的参数值。在SpringMVC中获取请求URL中的参数值的方式总体上来说分为两种方式,一种是通过注解@RequestParam注解方式,另一种是通过定义实体对象方式。
1、通过注解@RequestParam获取(接收)请求URL中的参数,SpringMVC底层会自动拦截请求并将请求中的参数值存于业务处理方法中
注解@RequestParam定义在业务处理方法(控制器方法)的()中,具有value,required,defaultValue几个属性。
①、value属性:其值映射请求中的参数名,将参数名对应的参数值存于自定义的变量中。他的实现原理可以这样理解,结合如下案例:SpringMVC会拦截请求,将请求中的参数userid(value=”userid”)的值存于业务处理方法中定义的参数id变量,具体语法请参照如下案例代码
下面来看具体的案例
请求端代码
<a href="springmvc/testSingleParameter?userid=admig">单一参数处理</a>
②、required属性:required属性用于约定请求URL中的参数是否为必须有的。
案例代码:
前端代码:
<div> <a href="springmvc/testSingleParameterRequired?userid=admin">@RequestParam的required属性(有参数userid)</a><br/> <a href="springmvc/testSingleParameterRequired">@RequestParam的required属性(无参数userid--->String引用类型)</a><br/> <a href="springmvc/testSingleParameterRequiredInt?age=10">@RequestParam的属性required=false(参数age--->int基本类型)</a><br/> <a href="springmvc/testSingleParameterRequiredInt">@RequestParam的属性required=false(无参数age--->int基本类型)</a><br/> </div>
注意:有时属性使用不当可能会导致错误,比如当设置required属性的值为false而接受请求的的变量定义为基本类型变量时,就会导致错误
③、defaultValue属性:
为解决以上问题,SpringMVC的@RequestParam注解提供defaultValue属性,设置参数的默认值,当请求中没有这个参数时,将这个默认值赋给变量
④、若请求中含有多个参数时,可以在业务处理方法(控制器方法)的()中定义多个@RequestParam注解
对应的前端代码如下:
<div> <a href="springmvc/testSingleParameterRequired?userid=admin&password=123456">两个参数处理1</a><br> <a href="springmvc/testSingleParameterRequired1?userid=admin&password=123456">两个参数处理2</a> </div> <div> 若接收请求中的参数为基本类型,同时@RequestParam注解指定了required=false时,为避免将null赋给基本类型变量接收,可以通过defaultValue属性指定默认值<br> <a href="springmvc/testSingleParameterRequiredIntDefault?age=10">有参数 情况</a> <a href="springmvc/testSingleParameterRequiredIntDefault">无有参数 情况</a> </div>
2、通过定义实体类对象接收请求中的参数
在介绍通过实体类接收请求参数前,我们先来看下关于请求URL中的同名参数(类似复选框)的处理过程,比较简单使用String类型一维数组接收即可
前端代码
通过实体类实现接收参数的功能,查看代码,第二个案例是参数混合处理方式,详见代码
前端代码
至此,SpringMVC中处理(获取|接收)请求URL中的参数过程阐述完毕,下面给出全部的代码供参考