SpringMVC的请求参数,类型转换器(日期格式),请求映射
请求参数
springMVC将传递的参数封装到处理的方法形参中,达到快速访问参数的目的
普通参数类型
参数名与处理器方法形参名保持一致
//地址栏传递参数name//http://localhost:82/request/str?name=小付@RequestMapping("/str")public String test01(String name){System.out.println("地址栏传递的参数:"+name);return "/success";}
//restful风格地址传递参数//http://localhost:82/request/str/小付@RequestMapping("/str/{id}")public String test02(@PathVariable("id") int id){System.out.println("restful风格地址栏传递的参数:"+id);return "/success";}
@RequestParam注解,设定参数
POJO类型参数
实体类中使用简单类型属性时候,参数名与实体类中属性名保持一致即可
//传递pojo实体类型//http://localhost:82/request/user?name=小付&age=18@RequestMapping("/user")public String test03(User user){System.out.println("地址栏传递的数据封装为user:"+user);return "/success";}
pojo类型属性,与方法其他形参同名时
复杂POJO类型参数
//传递pojo实体类型,实体类中属性还为实体类//http://localhost:82/request/user?name=小付&age=18&address.city=重庆@RequestMapping("/user/pojo")public String test04(User user){System.out.println("地址栏传递的数据封装为user:"+user);return "/success";}//传递pojo实体类型,实体类属性为List<String> friends;//http://localhost:82/request/user/friends?name=小付&age=18&friends=小花&friends=小李@RequestMapping("/user/friends")public String test05(User user){System.out.println("地址栏传递的数据封装为user:"+user);//地址栏传递的数据封装为user:User(name=小付, age=18, address=null, friends=[小花, 小李])return "/success";}
数组类型的参数
类型转换器
SpringMVC对接收的数据进行自动类型转换,该工作通过Converter接口实现
日期类型格式转换
声明自定义的格式转换并覆盖系统的转换格式
<!--5.启用自定义Converter--><mvc:annotation-driven conversion-service="conversionService"/><!--1.设定格式类型Converter,注册为Bean,受SpringMVC管理--><bean id="conversionService"class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><!--2.自定义Converter格式类型设定,该设定使用的是同类型覆盖的思想--><property name="formatters"><!--3.使用set保障相同类型的转换器仅保留一个,避免冲突--><set><!--4.设置具体的格式类型--><bean class="org.springframework.format.datetime.DateFormatter"><!--5.类型规则--><property name="pattern" value="yyyy-MM-dd"/></bean></set></property></bean>
日期格式类型转换注解方式
//传递时间格式,在xml配置转换器,是spring定义的日期格式转换器//http://localhost:82/request/date/xml?date=-02-02@RequestMapping("/date/xml")public String test06(Date date){System.out.println("地址栏传递的数据封装为date:"+date);//地址栏传递的数据封装为date:Sun Feb 02 00:00:00 CST return "/success";}//传递时间格式,注解的方式使用@DateTimeFormat的转换器,是spring定义的日期格式转换器//http://localhost:82/request/date?date=-02-02@RequestMapping("/date")public String test07(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date){System.out.println("地址栏传递的数据封装为date:"+date);//地址栏传递的数据封装为date:Sun Feb 02 00:00:00 CST return "/success";}