Spring Web MVC入门(2)(请求1)
请求
访问不同的路径就是发送不同的请求.在发送请求时,可能会带一些参数,所以学习Spring的请求,主要是学习如何传递参数到后端及后端如何接收.
1.传递单个参数
接收单个参数,在Spring MVC中直接用方法中的参数就可以,比如:
使用浏览器发送请求并传参: http://127.0.0.1:8080/User/m1?name=helloSpring
如果参数不一致,是获取不到参数的.
注意事项: 使用基本类型来接收参数时,参数必须传(除boolean类型外),否则会报500错误.
类型不匹配时,会报400错误.
2.传递多个参数
和接收多个参数一样,直接使用方法的参数接收即可.使用多个形参.
使用浏览器发送请求并传参: http://127.0.0.1:8080/User/m2?name=helloSpring&password=1234
当有多个参数时,前后端进行参数匹配时,是以参数的名称进行匹配的,因此参数的位置是不影响后端获取参数的结果.
3.传递对象
如果参数比较多是,方法声明就需要有很多形参,并且后续每次新增一个参数,也需要修改方法声明.
Spring MVC 也可以自动实现对象参数的赋值,比如Person对象:
传递对象代码实现:
使用浏览器发送请求并传参:
http://127.0.0.1:8080/User/m3?id=1&name=lisi&pssword=1234
Spring 会根据参数名称自动绑定到对象的各个属性上,如果某个属性未传递,则赋值为null(基本类型赋值为默认初始值,比如int会被赋值为0.
4.后端参数重命名(后端参数映射)
某些特殊情况下,前端传递的参数key和我们后端接收的key可以不一致,比如前端传递了一个time给后端,而后端是使用createtime字段来接受的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以使用@RequestParam来重命名前后端的参数值
使用浏览器发送请求: http://127.0.0.1:8080/demo/m1?time=zhangsan
如果使用createtime进行参数传递呢?
访问: http://127.0.0.1:8080/demo/m1?createtime=zhangsan
可以得知:
1.使用@RequestParam进行参数传递时,请求参数只能和@RequestParam声明的名称一致,才能进行参数绑定和赋值.
2.使用@RequestParam进行参数重命名时,参数就变成了必传参数.
非必传参数设置如果我们的实际业务前端的参数是一个非必传的参数,针对上述问题,如何解决呢?
先来了解下参数必传的原因,我们查看@RequestParam 注解的实现细节就可以发现端倪,注解实现如下:
可以看到required的默认值为true,表示含义就是:该注解修饰的参数默认为必传
既然如此,我们可以通过设置@RequestParam中的required=false来避免不传递时报错,具体实现如下:
可以看到,添加required=false之后,time前面也加了key,变成了value="time"
注解属性赋值时,没有指明key的话,默认为value属性.
如果需要有多个属性进行赋值时,需要写上key
5.传递数组
Spring MVC可以自动绑定数组参数的赋值
使用浏览器发送请求:
http://127.0.0.1:8080/test1/m1?arrayParam=zhangsan&arrayParam=lisi
可以看到后端对数组参数进行了正确的接收和响应
Ongwu博客 版权声明:以上内容未经允许不得转载!授权事宜或对内容有异议或投诉,请联系站长,将尽快回复您,谢谢合作!