在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參數類型