1、请求参数的绑定说明
绑定机制:
- 表单提交的数据都是 k=v 格式的。username=haha&password=123
- SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定。
- 要求:提交表单的 name 和参数的名称是相同的。
支持的数据类型:
-
基本数据类型和字符串类型
-
实体类型(JavaBean)
如果 Account 类中包含引用类型,引用类型的属性为 uname 和 age,那么可以这样写:
-
集合数据类型(List、map集合等)
2、特殊情况–自定义类型转换
大部分情况下,SpringMVC会自动完成类型转换,比如上面的 money 和 age,表单提交的是字符串类型,SpringMVC 会自动转换成 Integer 类型。
但是有些情况不好转换,比如“2011-1-1”这种格式的日期,SpringMVC无法转换成正确的日期格式。因此需要自定义类型转换。(Java可以对 “2011/1/1” 这种格式的字符串自动转换为日期)
步骤:
1、定义一个类,实现 Converter 接口,该接口有两个泛型。
/**
* 把字符串转化转换成日期
*/
public class StringToDateConverter implements Converter<String, Date> {
@Override
public Date convert(String s) {
if(s == null) {
throw new RuntimeException("请您传入数据");
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(s);
} catch (ParseException e) {
throw new RuntimeException("转换出现错误");
}
}
}
2、在 spring.xml 配置自定义类型转换器
<!-- 配置自定义类型转换器 -->
<bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.xiaoxin.utils.StringToDateConverter"></bean>
</set>
</property>
</bean>
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"></mvc:annotation-driven>
配置过滤器解决中文乱码问题
获取 Servlet 原生的 API
要什么,直接在对应类的参数列表里面写:
@RequestMapping("/testServlet")
public String testServlet(HttpServletRequest request, HttpServletResponse response) {
System.out.println("testServlet方法执行了");
System.out.println(request);
HttpSession session = request.getSession();
System.out.println(session);
return "success";
}