SpringMVC请求参数的绑定
假如请求带有参数 userName=cwh&userPass=123456
方法的参数列表为(String userName, String userPass)
那么MVC框架就会自动的将值填充
String类型和基本类型,javaBean,集合都可以自动填充。
当javaBean有应用类型的情况:
比如 A类中:
{
String userName;
String userPass;
B b;
getter&&setter
}
B:
{
String userAge;
}
那参数应该得是userName=cwh&userPass=123456&b.userAge才能封装
如果A中是一个 List<B> bList;
呢 ?那参数应该是bLister[0].userAge
如果A中是一个Map<String, B> bMap呢?参数应该是bMap[‘one’].userAge
自定义类型转换器
SpringMVC能实现绝大多数的类型转换,但总会一些类型和格式是不支持的,但SpringMVC运行我们自己再定义一些类型转换器。
例如:
/**
* 把字符串转换日期
* Converter<?,?>中,第一个是被转换的类型,后一个是要转换成的类型
* 页面传入的参数都是字符串,所以第一个String基本是固定的
*/
public class StringToDateConverter implements Converter<String,Date>{
/**
* 必须实现的方法
* String source 传入进来字符串
* @param source
* @return
*/
public Date convert(String source) {
// 判断
if(source == null){
throw new RuntimeException("请您传入数据");
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
// 把字符串转换日期
return df.parse(source);
} catch (Exception e) {
throw new RuntimeException("数据类型转换出现错误");
}
}
}
然后我们需要把我们自定义的类型转换器加到SpringMVC的类型转换器的集合中
<!--配置自定义类型转换器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.util.StringToDateConverter"/>
</set>
</property>
</bean>
之后还需要添加支持
<mvc:annotation-driven conversion-service="conversionService"/>
获取Servlet原生的API:只需要在参数列表中添加对应参数即可
如:(HttpServletRequest rq,HttpServletResponse rp)