SpringMVC参数接收与数据绑定
一. URL Maping(URL映射)
主要作用: 主要是将URL与Controller方法绑定!
通过将URL与方法绑定,SpringMVC便可以通过Tomcat对外暴露服务!
1. URL Mapping注解
@ RequestMapping
通用绑定
通常放在类上,用于URL的全局设置,比如RequestMapping(“/um”)
作用在方法上时,该方法不再区分get/post请求(不推荐使用)
@GetMapping
绑定Get请求
@PostMapping
2. 接收请求参数
第一种,使用Controller方法参数接收;
注意:
- Controller方法中参数的名称,与form表达提交的name名称是一样的;
- Spring MVC运行类型转换
get请求也可以通过Controller方法进行传参
@RequestParam 的作用: 保证前端传参名称与此处接收参数名称一致, 其参数为原始映射的参数 作为请求的参数“manger_name”在运行时,被动态注入到managerName中 此时只要求@RequestParam中的参数与前端原始映射的参数名称一致,对Java中参数不做要求
即前端访问的路径应该为:
第二种,使用Java Bean接收数据(请求参数)
post请求
Controller方法中的参数User为实体对象,该对象的变量与post请求中的名称须一致!
3. 接收表单复合数据
① 利用数组或List接收请求中的复合数据;
注:
前端form表单中的name与后端Controller方法中的参数名一致
数组不推荐,极力推荐使用list集合接收前端复合数据
注意:
在使用list集合接收复合参数时,集合前必须使用@RequestParam注解 只有增加该注解后,Spring MVC才知道原来请求中包含的复合数据要被转化为list集合
对于一组结构化的数据,通常会采用对象的方式(实体类)进行接收
② 利用@RequestParam 为参数设置默认值;
前端传递过来的参数如果为空,则后端使用时可能会出现异常?
通@RequestParam 来为参数设置默认值,则当其为空时,该参数的值为设置的默认值
③ 使用Map对象接收请求参数及注意事项
在接收复合数据时,Map是有缺陷的!
在接收的数据中,如果有复合数据时,Map是无法接收的!!!
注:同样的,RquestParam注解必须要有!
结论
在接收数据时,如果没有复合数据,则选择使用Map集合接收;
如果有复合数据时,则选择对象中的list集合接收!
4. 关联对象赋值
该表单对象两个关联类:
关联对象赋值就可以解决上面数据的接收问题,它是如何实现的呢?
注意:表单中的对象名(idcard)与实体类中对象名(idcard)一致!
5. 日期类型转换
使用注解DateTimeFormat(“yyyy-MM-dd”)
即可将前台传递过来的日期字符串转化为日期格式!
或者自己写一个日期转化类,同时让SpringMVC知道该类
注解和自定义类两者选其一即可!