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=2020-02-02
@RequestMapping("/date/xml")
public String test06(Date date){
System.out.println("地址栏传递的数据封装为date:"+date);
//地址栏传递的数据封装为date:Sun Feb 02 00:00:00 CST 2020
return "/success";
}
//传递时间格式,注解的方式使用@DateTimeFormat的转换器,是spring定义的日期格式转换器
//http://localhost:82/request/date?date=2020-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 2020
return "/success";
}
@RequestMapping注解,请求映射