SpringMVC的@RequestParam的解释

自SpringMVC4.2之后,RequestParam内部有4个参数:

1、String name

2、String value

3、boolean required

4、String defaultValue

其中name和value分别是对方的别名,即二者没区别,我个人比较喜欢用name,因为它的某些特性使得name这个名字更直观,下面会说到。

先看第一个映射方法的定义:

@RequestMapping("/paramTest0")
    public @ResponseBody String paramTest(Long id){
        String result = "";
        result += id;
        return result;
    }

①然后我在浏览器地址栏上输入:http://localhost:8080/test/hello/paramTest0

浏览器显示:null

这里引申出了SpringMVC的一个特性,即当浏览器中没有输入相应参数和值,那么SpringMVC会给id赋值为null,注意是null而非0,因此参数都最好不要用基础类型。

②在浏览器中输入:http://localhost:8080/test/hello/paramTest0?userName=zhang&userName=li&id=9&userName=shit

浏览器显示:9

说明浏览器中只要有输入需要的参数即可,而不管是否包含多余的参数,且没有规定顺序。

③在浏览器中输入:http://localhost:8080/test/hello/paramTest0?id=6

显示为:6

这个就不解释了。

#########################################分隔符##################################################

再看第二个映射方法的定义:

// 传参时可以http://ip:port/webapp/paramTest?userName=zhang&userName=wang 这种情况浏览器会将其拼接为userName="zhang,wang"
    @RequestMapping("/paramTest")
    public @ResponseBody String paramTest(@RequestParam(name="userName", required = false) String[] userNames, Long id){
        String result = "";
        if(userNames != null){
            for(int i=0;i<userNames.length;i++){
                result += userNames[i] + "#";
            }
        }
        result += id;
        return result;
    }

①然后在浏览器输入:http://localhost:8080/test/hello/paramTest?userName=zhang&userName=li&id=5&userName=fuck

显示为:zhang#li#fuck#5

由此引申出:首先URL请求的参数部分可以有多对参数的参数名一样,如上面的userName,且它们中间可以用其它参数隔开(上面用了id=5隔开),

而相同的参数名的值将会被浏览器变成userName="zhang,li,fuck"(类似这样,告诉服务器这是个数组,这里的元素值的顺序则是跟在URL请求中的顺序是对应的)。

然后看我们方法参数里的是userNames而非userName,但是仍然成功了,这是因为RequestParam的name或value属性的值userName才是和浏览器那边传过来的参数名对应,而它注解的参数userNames就是此注解"userName"要“赋值”的变量。

还要注意,一个@RequestParam只能注解一个参数,即后面的Long id上是没有该注解的。

时间: 2024-08-01 13:39:35

SpringMVC的@RequestParam的解释的相关文章

eclipse中导入jdk源码、SpringMVC注解@RequestParam、SpringMVC文件上传源码解析、ajax上传excel文件

eclipse中导入jdk源码:http://blog.csdn.net/evolly/article/details/18403321, http://www.codingwhy.com/view/799.html. ------------------------------- SpringMVC注解@RequestParam:http://825635381.iteye.com/blog/2196911. --------------------------- SpringMVC文件上传源

springMVC中@RequestParam注解的用法

springMVC中@RequestParam注解用在Controller层获解析.提取参数,当然你也可以用request.getParameter("name")来获取参数,而@RequestParam注解接收参数有几种不同的写法. 1.test(String name) 像正常的方法接收参数,不带@RequestParam注解.这种写法,如果没有name参数不会报错. 2.test(@RequestParam String name) 带@RequestParam注解.这种写法,n

springmvc 注解 RequestParam/RequestHeader/CookieValue/Pojo

RequestParam注解: 示例: @RequestMapping("/testRequestParam") public String testRequestParam(@RequestParam(name="username") String un,@RequestParam(name="age",required=false,defaultValue="0") int age) { System.out.printl

SpringMVC注解@RequestParam(转)

鸣谢:http://shawnccx.iteye.com/blog/730239 -------------------------------------------------- 在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取.这里主要讲这个注解 一.基本使用,获取提交的参数 后端代码: @RequestMapping("testRequestPar

SpringMVC注解@RequestParam全面解析

在此之前,写项目一直用的是@RequestParam(value="aa" required=false)这个注解,但是并不知道它的意思.现在懂了,特来记录下. 1.可以对传入参数指定参数名 1 @RequestParam String inputStr 2 // 下面的对传入参数指定为aa,如果前端不传aa参数名,会报错 3 @RequestParam(value="aa") String inputStr 2.可以通过required=false或者true来要

springmvc注解@RequestParam

@RequestMapping(method = RequestMethod.GET, params = "businessType=enroll") public ModelAndView nc_certServiceEnroll(@RequestParam(value="itrus_code",required=false) String itrus_code, @RequestParam(value="itrus_code",require

Springmvc中@RequestParam传值中文乱码解决方案

首先jsp表单里面有一些参数要传到controller中,通过以下方法接收: Java代码   @RequestMapping(value="/orderPaper") public ModelAndView orderPaper( @RequestParam("paperName")String paperName, @RequestParam("openStartTime")String openStartTime, @RequestPara

SpringMVC注解@RequestParam解析

1.可以对传入参数指定参数名 1 @RequestParam String inputStr 2 // 下面的对传入参数指定为param,如果前端不传param参数名,会报错 3 @RequestParam(value="param") String inputStr 2.可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传 1 // required=false表示不传的话,会给参数赋值为null,required=true就是必

SpringMVC注解@RequestParam的作用及注意事项

一.作用 作用在方法传递的参数前,用于接收所传参数 例如:http://localhost:8081/selectStudentById?id=01 接收问号后面的参数值(允许多个参数) 二.注解内部的四个属性 1.name 指定传入的参数名称,其后面跟的参数名称一定要与前端传入的参数名称一致 2.value 指定传入的参数名称,其后面跟的参数名称一定要与前端传入的参数名称一致 3.requred 指定参数是否是必传参数,如果不指定,默认为true 4.defaultValue 指定参数的默认值