天天看點

SpringMVC中各種解析器

1.視圖解析器(主要是MVC配置檔案中配置)将controller傳回的String類型資訊到視圖解析器組成一個完整的位址,進行請求轉發

本質就是将InternalResourceViewResolver進行IOC布置到核心容器中,自己對該類的屬性進行注入
 <!--視圖解析器-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/"></property>//字首
            <property name="suffix" value=".jsp"></property>//字尾
        </bean>
           

2.類型轉換解析器 SpringMVC中一般自帶了一些類型轉換,但有時候我們可以進行配置轉換方法

注意 :要使用自定義轉換器,那麼開啟mvc注解驅動時,需要定義conversion-service屬性

  1. 首先需要自己定義一個實作類,實作Converter接口,重寫轉換方法,定義規則
  2. 然後在mvc配置檔案中配置類型轉換解析器
進行了ConversionServiceFactoryBean類的IOC,對converters數組類型屬性進行指派,自定義轉換器是可以多個的
開啟注解驅動:
 <mvc:annotation-driven conversion-service="conversionServiceFactoryBean" ></mvc:annotation-driven>
 類型轉換器:
 <bean class="org.springframework.context.support.ConversionServiceFactoryBean" id="conversionServiceFactoryBean">
        <property name="converters">
            <array>
                <!--配置自定義轉器-->
                <bean class="com.ls.Converter.StringToDateConverter"></bean>
            </array>
        </property>
    </bean>
           

3.檔案上傳解析器 當檔案上傳時需要(這個除了屬性可以改變,id是寫死的multipartResolver,使用其他的運作時會出錯)

将CommonsMultipartResolver類IOC,并注入相應屬性例如最大大小 最小大小這些
<!--檔案上傳解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--最大上傳檔案大小 bt 1024*1024 5M-->
        <property name="maxUploadSize" value="5242880"></property>
    </bean>
           

4.異常解析器

最為友善,自己定義異常類,隻要實作HandlerExceptionResolver接口,重寫resolveException方法定義異正常則,然後将此實作類部署到IOC就可以

SpringMVC中各種解析器

5.mvc攔截器

1. 實作handlerInterceptor接口,重寫方法(不自動提示,快捷鍵alt+insert選擇)

2. 配置攔截器解析器 mvc:interceptors标簽

* 實作handlerInterceptor接口 重寫方法 不自動提示 是alt+insert選擇重寫 (一定要注意多個攔截器之間的攔截順序)
		 * preHandle方法 在執行controller之前執行
		 * postHandle方法 在執行完成controller之後執行
		 * afterCompletion方法 在試圖完成之後執行
		 * 傳回值false帶代表攔截 true就是放行 隻有放行才能繼續下一步
多個攔截器執行時:preHandler方法先後執行 
			   postHandler方法,從後往前執行
			   afterCompletion方法,從後往前執行
配置檔案:
<!--攔截器 多個自定義攔截器依次執行 但執行方法時順序不一緻-->
    <mvc:interceptors>
        <mvc:interceptor>
        /* 	
        -攔截路徑
             /*代表比對一級 eg:/user
             /**代表比對多級 eg:/user/find
            <mvc:mapping path="/**"/>
            */
            <!--自定義攔截器配置ioc-->
            <bean id="interceptor" class="com.ls.interceptor.MyInterceptor"></bean>
        </mvc:interceptor>
     <mvc:interceptors>
           

執行順序效果圖:

SpringMVC中各種解析器