web框架之springmvc參數綁定

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章