默认参数绑定
SpringMvc支持默认的参数类型包括
- HttpServletRequest:通过request对象获取请求信息
- HttpServletResponse:通过response处理响应信息
- HttpSession:通过session对象得到session中存放的对象
所以SpringMvc可以使用request域来获得请求的参数
绑定基本类型
直接通过在方法中写入基本类型的参数即可,参数类型包括基本数据类型或包装数据类型,推荐使用包装数据类型,因为基本数据类型不可为null
这里的属性名字,必须与传递的参数名称一致
注意: 如果方法类填入的参数名称与页面传递过来的参数名称不一致,需要手动设置
value:参数名字,即入参的请求参数名字。
required:是否必须,默认是true。如果传递过来的值为null,不设置该值为false,不必须的话就会报错。TTP Status 400 - Required Integer parameter ‘XXXX’ is not present
defaultValue:默认值,表示如果请求中没有参数时,将使用该默认值
绑定Pojo对象
会将请求的参数自动封装到pojo类中,与类中的属性对应
小结
自定义参数绑定
需求:根据需求自定义日期格式
由于日期有许多格式,springmvc没法直接把字符串转换为日期,所以需要自定义参数绑定
前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。可以在springmvc处理器适配器上自定义转换器Converter进行参数绑定。
配置转换器
<!-- 注解驱动 -->
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"/>
<!-- 配置Conveter转换器 转换工厂 (日期、去掉前后空格)。。 -->
<bean id="conversionServiceFactoryBean" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<!-- 配置 多个转换器-->
<property name="converters">
<list>
<!-- 加载自己编写的转换器类 -->
<bean class="com.itheima.springmvc.conversion.DateConveter"/>
</list>
</property>
</bean>
编写自定义Converter类
package com.itheima.springmvc.conversion;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.core.convert.converter.Converter;
//转换日期类型的数据,需要实现Converter接口 S : 页面传递过来的类型;T : 转换后的类型
public class DateConveter implements Converter<String, Date>{
// 实现该方法,参数是传递过来的值
public Date convert(String source) {
try {
if(null != source){//2016:11-05 11_43-50
DateFormat df = new SimpleDateFormat("yyyy:MM-dd HH_mm-ss");
return df.parse(source);
}
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
}
小结