中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring框架的攔截器和過濾器分別有什么作用

發布時間:2021-06-24 11:34:34 來源:億速云 閱讀:552 作者:chen 欄目:大數據

本篇內容介紹了“Spring框架的攔截器和過濾器分別有什么作用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

過濾器(Filter):它是依賴于servlet容器。在實現上,基于函數的回調,它可以對幾乎所有請求進行過濾,但是缺點是一個過濾器實例只能在容器初始化時調用一次。使用過濾器的目的是用來做一些過濾操作,獲取我們想要獲取的數據,比如:在javaweb中,對傳入的request、response提前過濾掉一些信息,或者提前設置一些參數,然后在傳入servlet或者controll進行業務邏輯操作。通常用的場景 :在過濾中修改字符編碼、在過濾器中修改HttpServletRequest的一些參數(XSSfilter自定義過濾器),如:過濾低俗文字,危險字符等。

攔截器(interceptors):它是依賴于web框架,在SpringMVC中就是依賴于SpringMVC框架。在實現上,基于Java的反射機制,屬于面向切面編程(AOP)的一種運用,就是在service或者一個方法前,調用一個方法,或者在方法后,調用一個方法,比如動態代理就是攔截器的簡單實現,在調用方法前打印出字符串(或者做其他邏輯操作),也可以在調用方法后打印出字符串,甚至在拋出異常的時候做業務邏輯的操作。由于攔截器是基于web框架的調用,因此可以使用Spring的依賴注入進行一些業務操作,同時一個攔截器實例在一個controller生命周期能可以多次調用。但是缺點是只能對controller請求進行攔截,對其他的一些比如直接訪問靜態資源的請求則沒辦法進行攔截處理。

區別:

1、使用范圍不同:filter是servlet規范規定的,只能用于web程序中,而攔截器既可以用于web程序,也可以用于application,swing程序中。

2、規范不同:filter是在servlet規范中定義的,是servlet容器支持的。而攔截器是在Spring容器內的,是Spring框架支持的。

3、使用的資源不同:同其他的代碼塊一樣,攔截器也是一個Spring的組件,歸Spring管理,配置在Spring文件中,因此能使用Spring里的任何資源,對象,例如:service對象,數據源,事務管理等,通過Ioc注入到攔截器即可,而Filter則不能

4、深度不同:Filter只在Servlet前后起作用。而攔截器能夠深入到方法前后,異常拋出前后等,因此攔截器的使用具有更大的彈性。所以在Spring框架的程序中,要優先使用攔截器。

過濾器的實現:

定義一個類實現javax.servlet.Filter接口,該接口提供三個方法

init(FilterConfig config)方法:此方法用于初始化,在容器加載并實例化過濾器的時候自動調用。容器為此方法傳遞一個FilterConfig對象,其中包含配置信息。

doFilter(servletRequest request,ServletResponse response,FilterChain chain)方法:此方法是過濾器的核心方法,用于對請求和響應進行處理。

destiry()方法:此方法用于銷毀過濾器,但容器銷毀過濾器實例之前自動調用

過濾器的兩種配置方法:

1、注解:

@WebFilter將一個實現了javax.servlet.Filte接口的類定義為過濾器

屬性filterName聲明過濾器的名稱,可選

屬性urlPatterns指定要過濾的URL模式,也可使用屬性value來聲明

2、配置文件

使用<filter>標簽在web.xml文件中配置

攔截器的實現:

定義一個類,通過實現HandlerInterceptor接口,或繼承HandlerInterceptor接口的實現類來定義,該接口實現三個方法,

preHandle()方法:該方法會在控制器方法前執行,其返回值表示是否中斷后續操作。當其返回值為true時,表示繼續向下執行,當其返回值為false時,會中斷后續的所有操作

postHandle()方法:該方法會在控制器方法調用之后,且解析視圖之前執行,可以通過此方法對請求域中的模型和視圖做出進一步的修改

afterHandle()方法:該方法會在整個請求完成,即視圖渲染結束之后執行,可以通過此方法實現一些資源清理,記錄日志信息等工作。

攔截器的兩種配置方法:

1、在SpringMVC配置文件中,使用<mvc:interceptors> 標簽配置

2、定義一個配置類,繼承WebMvcConfigurerAdapter,重寫addInterceptors方法,對自定義的攔截器進行注冊。

“Spring框架的攔截器和過濾器分別有什么作用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铁力市| 周至县| 柳林县| 项城市| 高唐县| 当涂县| 刚察县| 菏泽市| 同心县| 尚志市| 建水县| 页游| 文成县| 宽甸| 井陉县| 奉化市| 枝江市| 思南县| 丁青县| 阿坝县| 晋宁县| 汕头市| 株洲县| 东乡县| 巩义市| 长海县| 浮山县| 屏东县| 阆中市| 开封县| 区。| 青神县| 龙泉市| 图们市| 嘉禾县| 上饶市| 昌黎县| 宁乡县| 剑川县| 林西县| 舒城县|