Spring 過濾器和攔截器

爪哇島的流浪漢發表於2018-07-16

1.實戰技巧問題
    1)中文亂碼解決方案
        在表單提交時,如果遇到中文字元會出現亂碼現象,Spring提供
        一個CharacterEncodingFilter過濾器,可以用於解決亂碼問題

        CharacterEncodingFilter使用時需要注意以下問題
        表單資料以POST方式提交
        在web.xml中配置CharacterEncodingFilter過濾器
        頁面編碼和過濾器指定的編碼保持一致

    2)異常處理
        Spring處理異常方式有以下三種
        1.使用Spring提供的簡單異常處理器
            SimpleMappingExceptionResolver
            只需要在Spring的配置檔案中定義異常處理器即可

        2.實現HandlerExceptionResolver介面(自定義異常處理器)
            自定義異常處理器需要在Spring的配置檔案中定義才可以使
            用,適合全域性處理有"處理過程"的異常
            
        3.使用@ExceptionHandler註解實現異常處理
            適合區域性處理有"處理過程"的異常
            
    3)攔截器
        
        攔截器介面
        攔截器必須實現HandlerInterceptor介面

        preHandle()
        處理器執行前呼叫,方法返回true表示繼續呼叫其他攔截器或
        處理方法,返回false表示中斷流程,不會執行後續的攔截器或
        處理器    
        
        postHandle()
        處理器方法執行後,檢視處理器呼叫前,此時可以通過ModelAndView
        物件對模型資料進行處理或對檢視進行處理    
        
        afterCompletion()
        整個請求處理完畢後呼叫,如效能監控中可以在此記錄結束時間,
        輸出消耗時間,可以進行資源清理
        
        自定義攔截器的配置
        <mvc:interceptors>
            <mvc:interceptor>
                <!-- 需要通過攔截器的URL -->
                <mvc:mapping path=""/>
                
                <!-- 不需要通過攔截的URL -->
                <mvc:exclude-mapping path=""/>
                
                注意:URL不可以寫相對路徑,絕對路徑是從名稱空間開始
                
                <!-- 攔截器元件 -->
                <bean class=""/>
            </mvc:interceptor>
        </mvc:interceptors>    
        
        提示:自定義攔截器,實現HandlerInterceptor介面,需要實現
        定義的全部抽象方法,如果只需要某一個方法可以繼承
        HandlerInterceptorAdapter

相關文章