转载

SpringMVC入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)

一、上一博文我们讲了SpringMVC中的客户端到服务器端的请求映射机制,今天我们将继续研究在SpringMVC的控制器方法中怎样获取请求中的参数值。在SpringMVC中获取请求URL中的参数值的方式总体上来说分为两种方式,一种是通过注解@RequestParam注解方式,另一种是通过定义实体对象方式。

1、通过注解@RequestParam获取(接收)请求URL中的参数,SpringMVC底层会自动拦截请求并将请求中的参数值存于业务处理方法中

注解@RequestParam定义在业务处理方法(控制器方法)的()中,具有value,required,defaultValue几个属性。

①、value属性:其值映射请求中的参数名,将参数名对应的参数值存于自定义的变量中。他的实现原理可以这样理解,结合如下案例:SpringMVC会拦截请求,将请求中的参数userid(value=”userid”)的值存于业务处理方法中定义的参数id变量,具体语法请参照如下案例代码

下面来看具体的案例

SpringMVC入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)

请求端代码

<a href="springmvc/testSingleParameter?userid=admig">单一参数处理</a>

②、required属性:required属性用于约定请求URL中的参数是否为必须有的。

案例代码:

SpringMVC入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)

前端代码:

<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而接受请求的的变量定义为基本类型变量时,就会导致错误

SpringMVC入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)

③、defaultValue属性:

为解决以上问题,SpringMVC的@RequestParam注解提供defaultValue属性,设置参数的默认值,当请求中没有这个参数时,将这个默认值赋给变量

SpringMVC入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)

④、若请求中含有多个参数时,可以在业务处理方法(控制器方法)的()中定义多个@RequestParam注解

SpringMVC入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)

对应的前端代码如下:

<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入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)

前端代码

SpringMVC入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)

通过实体类实现接收参数的功能,查看代码,第二个案例是参数混合处理方式,详见代码

SpringMVC入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)

前端代码

SpringMVC入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)

至此,SpringMVC中处理(获取|接收)请求URL中的参数过程阐述完毕,下面给出全部的代码供参考

SpringMVC入门及系列教程(四)-SpringMVC在控制器中获取请求中的参数值(详细)
原文  http://blog.csdn.net/dl0246/article/details/78286685
正文到此结束
Loading...