微服务 教程
1085个小节阅读:195.9k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
前端传来的参数全部为字符串类型,SpringMVC使用自带的转换器将字符串参数转为需要的类型。如:
xxxxxxxxxx
// 获取简单类型参数
"/c1/param1") (
public void simpleParam(String username,int age){
System.out.println(username);
System.out.println(age);
}
请求路径:http://localhost:8080/c1/param1?username=bz&age=10
但在某些情况下,无法将字符串转为需要的类型,如:
xxxxxxxxxx
"/c1/param9") (
public void dateParam(Date birthday){
System.out.println(birthday);
}
由于日期数据有很多种格式,SpringMVC没办法把所有格式的字符串转换成日期类型。比如参数格式为birthday=2025-01-01
时,SpringMVC就无法解析参数。此时需要自定义参数类型转换器。
定义类型转换器类,实现Converter接口
xxxxxxxxxx
// 类型转换器必须实现Converter接口,两个泛型代表转换前的类型,转换后的类型
public class DateConverter implements Converter<String, Date> {
/**
* 转换方法
* @param source 转换前的数据
* @return 转换后的数据
*/
public Date convert(String source) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
注册类型转换器对象
xxxxxxxxxx
<!-- 配置转换器工厂 -->
<bean id="dateConverter" class="org.springframework.context.support.ConversionServiceFactoryBean">
<!-- 转换器集合 -->
<property name="converters">
<set>
<!-- 自定义转换器 -->
<bean class="com.itbaizhan.converter.DateConverter"></bean>
</set>
</property>
</bean
<!-- 使用转换器工厂 -->
<mvc:annotation-driven conversion-service="converterFactory"></mvc:annotation-driven>
此时再访问http://localhost:8080/c1/param9?birthday=2025-01-01时,SpringMVC即可将请求参数封装为Date类型的参数。
1. SpringMVC自定义类型转换器需要实现接口
A Convert
B Format
C Converter
D Formater
1=>C