SSM框架系列學習總結9之SpringMVC參數綁定

首先, 我總結復習之前的內容, 詳細地介紹一下SpringMVC各組件的作用和用法.
1.配置前端控制器
2.配置映射器
3.配置適配器
4.配置視圖解析器
5.配置Handler

DispatcherServlet.properties
springmvc中:當我們沒有手動去配置,映射器,適配器,視圖解析器這么幾個組件的時候,那么會自動去加載DispatcherServlet.properties配置文件的默認配置

image.png

另外一個映射器和適配器(非注解), 這兩種不常用!
適配器: HttpRequestHandlerAdapter
該適配器要求Handler實現HttpRequestHandler接口

映射器:
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

在視圖解析器中配置jsp路徑的前綴和后綴,那么在返會ModelAndView的時候,JSP路徑會默認加上下面配置的前綴和后綴

Springmvc的注解形式的適配器和映射器

AnnotationMethodHandlerAdapter
DefaultAnnotationHandlerMapping
上面的映射器和適配器從3.2版本開始就已經過時了
3.2版本以后采用的注解映射器和注解適配器
映射器:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
適配器:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

Springmvc.xml文件中的配置


image.png

image.png

相關注解:
@Controller:申明下面的類是一個Handler, 并且會由springIOC容器來創(chuàng)建實例
@RequestMapping: 指定Handler中某個方法的訪問路徑
那么采用注解形式開發(fā),可以在一個Handler中編寫多個業(yè)務方法

參數的綁定

在springmvc中有幾個參數是默認已經綁定好了的
HttpServletReuqest
HttpServletResponse
Model
HttpSession
如果要是用上面幾個參數,只需要在形式參數中綁定即可

1.簡單類型的綁定

默認情況下,請求中的參數名必須要和Controller方法中的形參的參數名一致才能綁定成功


image.png
image.png

上面的注解表示請求中的參數名要和value的值保持一樣 才能綁定成功
required: 表示該參數是否是必須的。
defaultValue: 給這個參數一個默認值。

2.pojo類型的綁定

a) 簡單類型pojo
要求請求中的參數名和pojo中的屬性名保持一致才能綁定

b) 包裝類型的pojo
如果綁定的類型是包裝的pojo類型, 那么請求參數名必須是包裝的pojo中的屬性名.屬性名
直到最后的類型是簡單類型即可,如下圖,綁定的參數是
包裝類型QueryVo
queryVo中的屬性items,而items中的屬性是name,price ... 所以請求參數名為items.name
實體類:

public class QueryVo {
    private Items items;

    // 封裝List集合, 集合中元素為Items
    List<Items> itemsList;
    // ...
}

public class Items {
    private Integer id;
    private String name;
    private Double price;
    private String detail;
    private String pic;
    private Date createtime;
    // ...
}
image.png
image.png

解決中文亂碼的過濾器

<filter>
  <filter-name>CharacterEncodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>utf-8</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CharacterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

3. 自定義參數綁定

需要我們自定義一個參數類型轉換器 ,去實現springmvc提供的一個接口Converter<String, Date>。

/**
 * 將字符串轉換成Date類型
 * Author menglanyingfei
 * Created on 2018.01.24 14:44
 */
public class StringToDate implements Converter<String, Date> {
    @Override
    public Date convert(String s) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        try {
            return format.parse(s);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

然后還需要在處理器適配器中配置一個自定義參數綁定器:
在springMVC.xml中配置:

<!-- 配置注解形式的適配器和映射器
        conversion-service: 配置自定義參數綁定器
        validator: 引入一個校驗器
    -->
    <mvc:annotation-driven conversion-service="conversionService"
        />

    <!-- 注冊一個參數綁定器 -->
    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <!-- 轉換器 -->
        <property name="converters">
            <list>
                <bean class="com.wtu.ssm.utils.StringToDate"/>
            </list>
        </property>
    </bean>

Jsp頁面:


image.png
4. 數組類型的參數綁定

批量刪除商品: 根據商品的id刪除,多個商品的id,將多個id綁定到一個數組中:
只需要請求參數名和controller方法中的形參的數組名一致即可。


image.png
image.png
5. 集合類型的參數綁定

批量修改商品信息:

  1. 批量查詢商品, 然后將所有的商品顯示在一個批量修改的頁面。批量修改商品的頁面可以直接采用ItemsList.jsp
  2. 提交批量修改商品


    image.png

頁面上的參數名該怎么定義?


image.png

此時在QueryVo中封裝了itemsList集合:


image.png

完整代碼地址

https://github.com/menglanyingfei/SSMLearning/tree/master/SSM

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,551評論 19 139
  • 1.Spring web mvc介紹 Spring web mvc和Struts2都屬于表現層的框架,它是Spri...
    七弦桐語閱讀 11,979評論 2 38
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,232評論 0 4
  • 經過上篇文章Spring、Spring MVC與Mybatis整合工程搭建我們便將SSM的環(huán)境搭建了,接下來我們便...
    codingXiaxw閱讀 23,650評論 1 38
  • 最近有很多事情,有好有壞、有自己的感想、也有一些觸景生情。我沒辦法把他們只用一篇文字給總結起來,所以就寫了這篇雜記...
    Time羽朦閱讀 453評論 4 2

友情鏈接更多精彩內容