在spring框架中,参数绑定指的是通过处理器方法的形参,接收到请求的url或者表单中的参数数据。
分为:
- 默认支持参数类型
- 简单参数类型
- pojo参数类型
- pojo包装类型
- 自定义参数类型
- 数组参数类型
- list参数类型
一、默认支持参数类型
1. HttpServletRequest
作用:通过request,获取请求的参数数据。
2. HttpServletResponse
作用:通过response,执行响应。
3. HttpSession
作用:通过session,获取和保存会话域数据。
4. Model/ModelMap
说明:
1)Model是一个接口,是模型,用于封装响应的模型数据
2)ModelMap是实现类,使用Model和使用ModelMap,效果是一样的
3)使用Model封装响应的模型数据,就可以不使用ModelAndView,页面视图可以使用字符串 响应。
二、简单参数类型
常见简单参数类型:
类型 | 包装类型 | 基础类型 |
整型 | Integer | int |
长整型 | Long | long |
单精度浮点型 | Float | float |
双精度浮点型 | Double | double |
字符串 | String | String |
注意事项:使用简单参数类型绑定参数,推荐使用简单类型的包装类型(Integer),不建议使用简单类型的基础类型(int)。原因是基础类型不能为null值,如果不传递会报异常。
三、pojo参数类型
如果一次请求中参数比较多,使用pojo对象进行绑定,会比较方便。
注意:中文乱码问题
spring框架提供了字符集编码过滤器(CharacterEncodingFilter),解决post请求的中文乱码。
在web.xml配置字符集编码过滤器:
<!--配置字符集编码的过滤器-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!--指定使用的字符集编码:UTF-8-->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<!--配置所有请求都经过字符集编码过滤器处理-->
<url-pattern>/*</url-pattern>
</filter-mapping>
四、pojo包装类型
用于接收综合查询条件(即复杂的查询条件)。
五、自定义参数类型
说明:在实际项目中,比如日期类型或者货币数据,由于格式多不固定。springmvc框架不知道我们需要的格式,只能我们根据业务需求来转换。
1、需要实现Converter接口
public class DateConverter implements Converter<String,Date>{
/**
* 实现转换逻辑
* @param s
* @return
*/
public Date convert(String s) {
// 2019-02-15 08:22:30
// 定义日期格式化对象
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 转换数据
try {
// 转换成功,直接返回
return format.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
// 转换失败,返回null
return null;
}
}
2、在springmvc.xml配置自定义转换器
<!--注解驱动方式配置处理器映射器、处理器适配器,说明:
1.导入mvc名称空间
2.配置<mvc:annotation-driven/>
3.它等于同时配置了RequestMappingHandlerMapping/RequestMappingHandlerAdapter
-->
<mvc:annotation-driven conversion-service="conversionService"/>
<!-- 配置自定义转换器 -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="cn.itheima.converter.DateConverter"/>
</set>
</property>
</bean>
六、数组参数类型
说明:比如实现某数据的批量删除。一次接收多个Id参数数据,需要使用数据参数类型。
七、list参数类型
说明:比如在实现某数据批量修改。一次接收多个对象数据,需要使用list参数类型