日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Java高頻面試題:過濾器和攔截器兩位難兄難弟區別

來源: 責編: 時間:2024-01-17 10:13:25 306觀看
導讀一、前言一直想著寫一篇關于過濾器和攔截器,記得之前面試,面試官突然問了一個談談過濾器和攔截器的區別。當時腦瓜子嗡嗡的,這個沒準備過,咋辦,支支吾吾的說了先到過濾器在到攔截器。直接被說,你連請求來了經歷那些都不知道

c4Y28資訊網——每日最新資訊28at.com

一、前言

一直想著寫一篇關于過濾器和攔截器,記得之前面試,面試官突然問了一個談談過濾器和攔截器的區別。c4Y28資訊網——每日最新資訊28at.com

當時腦瓜子嗡嗡的,這個沒準備過,咋辦,支支吾吾的說了先到過濾器在到攔截器。c4Y28資訊網——每日最新資訊28at.com

直接被說,你連請求來了經歷那些都不知道,怎么能行呢?c4Y28資訊網——每日最新資訊28at.com

雖然這個是八股文,但是還是比較有內容的,在項目中會使用到,在鑒權、日志記錄等!c4Y28資訊網——每日最新資訊28at.com

從此之后,面試前第一件事,就是把過濾器和攔截器看一遍。c4Y28資訊網——每日最新資訊28at.com

今天好好總結一下,不需要在看別人寫的了!c4Y28資訊網——每日最新資訊28at.com

不能為了面試而學習,咱們是為了掌握好他們,咱們今天從概念--->場景--->實戰--->面試題。c4Y28資訊網——每日最新資訊28at.com

一步步層層遞進,不讓大家白白點開,一定是有所收獲!c4Y28資訊網——每日最新資訊28at.com

執行順序總體圖:c4Y28資訊網——每日最新資訊28at.com

c4Y28資訊網——每日最新資訊28at.com

二、過濾器

1、概念

過濾器是一種在 Java Web 應用中用于處理請求和響應的組件。它可以攔截客戶端發起的請求,也可以攔截服務器返回的響應,對它們進行處理或者修改。c4Y28資訊網——每日最新資訊28at.com

過濾器屬于Servlet規范的一部分,過濾器是用于執行過濾任務的對象,它可以在請求到達 Servlet 之前或響應發送給客戶端之前執行一些額外的邏輯。c4Y28資訊網——每日最新資訊28at.com

2、應用場景

日志記錄: 過濾器常用于記錄請求和響應的日志,包括請求的路徑、參數、處理時間等信息。c4Y28資訊網——每日最新資訊28at.com

身份驗證和授權: 過濾器可以用于實現身份驗證和授權邏輯,例如檢查用戶是否已登錄,是否具有足夠的權限訪問某個資源。c4Y28資訊網——每日最新資訊28at.com

防御性編程: 過濾器可以用于對請求進行安全檢查,防止潛在的攻擊,比如阻止惡意請求、XSS(跨站腳本攻擊)等。c4Y28資訊網——每日最新資訊28at.com

性能監控: 過濾器可以用于收集請求的處理時間、資源使用等信息,用于性能監控和優化。c4Y28資訊網——每日最新資訊28at.com

3、核心方法

先說一下過濾器的三個核心方法:init 方法:在過濾器被創建并添加到容器時調用,在過濾器的生命周期中只被調用一次。doFilter 方法:是過濾器的核心方法,用于處理請求和響應。可以進行前置處理、請求轉發或鏈的調用,以及后置處理。(FilterChain.doFilter)destroy 方法:在過濾器被銷毀前調用,用于進行資源釋放和清理工作。在過濾器的生命周期中只被調用一次。c4Y28資訊網——每日最新資訊28at.com

4、實戰

編寫自己的過濾器配置類: 會把web開頭的請求率先通過我們定義的過濾器,我們可以在里面進行權限的校驗、記錄日志等。c4Y28資訊網——每日最新資訊28at.com

多個過濾器,需要有執行順序可以使用Spring注解@Order,也可以使用@WebFilter(urlPatterns="/web/order/"),通過請求去到下一個符合條件的過濾器!c4Y28資訊網——每日最新資訊28at.com

咱們使用的注解,需要在啟動類加上掃描,不然過濾器是不會生效的!c4Y28資訊網——每日最新資訊28at.com

@ServletComponentScan。c4Y28資訊網——每日最新資訊28at.com

/** * @author wangzhenjun * @date 2023/11/22 15:34 */@Slf4j@WebFilter("/web/*")public class MyFilter implements Filter {    @Override    public void init(FilterConfig filterConfig) throws ServletException {        Filter.super.init(filterConfig);    }    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        log.info("用戶已經認證,繼續處理");        log.info("用戶有權限,繼續處理");        chain.doFilter(request, response);        log.info("處理完成,放行之后");    }    @Override    public void destroy() {        Filter.super.destroy();    }}

測試訪問,經過了過濾器,來到我們的Controller,最后重新會到過濾器內的doFilter方法!c4Y28資訊網——每日最新資訊28at.com

c4Y28資訊網——每日最新資訊28at.com

三、攔截器

1、概念

攔截器(Interceptor)是一種在應用程序處理請求和響應的過程中,插入自定義處理邏輯的組件。攔截器是一種常見的設計模式,它允許在核心處理邏輯之前或之后執行額外的操作。c4Y28資訊網——每日最新資訊28at.com

一般出現在Spring MVC中,Spring MVC 中的攔截器實現原理主要基于 Spring 框架的 AOP和 HandlerInterceptor 接口。c4Y28資訊網——每日最新資訊28at.com

2、應用場景

敏感字檢測:過濾器可以用于檢測請求中的文本內容,包括表單提交、請求參數等,以查找是否包含敏感字。異常處理: 攔截器可以用于捕獲和處理在請求處理過程中發生的異常。這使得開發者可以集中處理異常情況,返回合適的錯誤響應或記錄異常信息。日志記錄: 攔截器可用于記錄請求和響應的日志信息,包括請求參數、響應狀態碼、執行時間等。國際化和本地化: 攔截器可以用于根據請求的語言或地區設置合適的國際化或本地化信息,以提供多語言支持。c4Y28資訊網——每日最新資訊28at.com

其實過濾器和攔截器很多場景他們兩個都能實現。待會我們說一下區別在那里,都能實現一般采用什么方式去實現!c4Y28資訊網——每日最新資訊28at.com

3、核心方法

先說一下攔截器接口的三個核心方法:c4Y28資訊網——每日最新資訊28at.com

preHandle 方法: 在請求被處理之前調用。該方法在整個請求處理過程中是第一個被調用的方法。c4Y28資訊網——每日最新資訊28at.com

如果該方法返回 true,則請求繼續進行后續的處理;如果返回 false,則中斷請求處理,不會進入控制器方法。c4Y28資訊網——每日最新資訊28at.com

postHandle 方法: 在請求處理后、視圖渲染前調用。在這個方法中,可以進行一些后置處理,如對ModelAndView的修改等。c4Y28資訊網——每日最新資訊28at.com

afterCompletion方法: 在整個請求完成后調用,即在視圖渲染完畢或在處理過程中發生異常后調用。這個方法在請求完成后,不論請求處理過程中是否發生異常都會被調用。c4Y28資訊網——每日最新資訊28at.com

4、實戰

先創建自己的攔截器類:MyInterceptor、c4Y28資訊網——每日最新資訊28at.com

/** * @author wangzhenjun * @date 2023/11/23 9:17 */@Slf4j@Componentpublic class MyInterceptor implements HandlerInterceptor {    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {        log.info("===>攔截器<===:開始對數據進行敏感字過濾");        return true;    }    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,                           ModelAndView modelAndView) {        // 在請求處理后、視圖渲染前執行的邏輯        log.info("===>攔截器<===:我可以改變一下modelAndView!");    }    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,                                Exception ex) {        log.info("===>攔截器<===:釋放資源");    }}

把自己的攔截器注冊上:c4Y28資訊網——每日最新資訊28at.com

/** * @author wangzhenjun * @date 2023/11/23 10:54 */@Configurationpublic class MyWebConfig implements WebMvcConfigurer {    @Autowired    private MyInterceptor myInterceptor;    @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(myInterceptor)                .addPathPatterns("/web/*");    }}

測試訪問一下,攔截成功,走了我們自定義的攔截器!c4Y28資訊網——每日最新資訊28at.com

c4Y28資訊網——每日最新資訊28at.com

四、面試題:二者有什么區別?

我們從下面幾種情況來說一下二者的區別!c4Y28資訊網——每日最新資訊28at.com

1、出身不同

過濾器: 是基于 Java Servlet 規范的一部分,屬于 Servlet 容器的一項功能。c4Y28資訊網——每日最新資訊28at.com

c4Y28資訊網——每日最新資訊28at.com

攔截器: 是 Spring MVC 框架的一部分,屬于 Spring 框架的一項特性。c4Y28資訊網——每日最新資訊28at.com

c4Y28資訊網——每日最新資訊28at.com

2、應用場景不同

過濾器: 主要用于全局范圍的請求和響應處理,可以對所有請求進行通用性的處理,例如性能監控、身份驗證、日志記錄等。c4Y28資訊網——每日最新資訊28at.com

攔截器: 主要用于對控制器方法的請求和響應進行處理,攔截器的配置更加靈活,攔截器更接近業務系統,可以實現特定業務邏輯的攔截,例如敏感字檢測、異常監控等。c4Y28資訊網——每日最新資訊28at.com

我們把握住側重點核心是在:c4Y28資訊網——每日最新資訊28at.com

過濾器:通用性功能攔截器:業務邏輯方面。c4Y28資訊網——每日最新資訊28at.com

3、實現原理不同

過濾器的底層實現原理是基于方法回調實現的,我們在doFilter方法中看到chain.doFilter(request, response);,這個就是核心,我們看一下他的源碼:c4Y28資訊網——每日最新資訊28at.com

/*** FilterChain 是 servlet 容器提供給開發人員的一個對象,用于查看已過濾資源請求的調用鏈。* 篩選器使用 FilterChain 調用鏈中的下一個篩選器,或者如果調用篩選器是鏈中的最后一個篩選器,則調用鏈末尾的資源。*/public interface FilterChain {    /**     * 導致調用鏈中的下一個篩選器,或者如果調用篩選器是鏈中的最后一個篩選器,     * 則會導致調用鏈末尾的資源。     */    public void doFilter(ServletRequest request, ServletResponse response)            throws IOException, ServletException;}

攔截器的底層實現原理基于動態代理(HandlerInterceptor 的代理對象是通過AOP機制實現的)和反射機制實現的。c4Y28資訊網——每日最新資訊28at.com

過濾器鏈HandlerExecutionChain類,有興趣的可以看一下!c4Y28資訊網——每日最新資訊28at.com

c4Y28資訊網——每日最新資訊28at.com

4、執行順序

我們剛剛就在實戰中看到了執行順序:c4Y28資訊網——每日最新資訊28at.com

c4Y28資訊網——每日最新資訊28at.com

我們在看一下代碼中的執行順序,先執行過濾器,在執行攔截器,最后才會進入真正的要調用的方法。c4Y28資訊網——每日最新資訊28at.com

c4Y28資訊網——每日最新資訊28at.com

五、總結

看到這里都是成功人士,對于一個面試題,我們不能只背一下,而是從多方面去了解它,這樣才能印象深刻。c4Y28資訊網——每日最新資訊28at.com

況且,過濾器和攔截器在企業級應用中還是很常見的,特別是攔截器,誰能說自己的項目里沒有使用!c4Y28資訊網——每日最新資訊28at.com

過濾器側重通用性,攔截器側重業務,更加靈活!c4Y28資訊網——每日最新資訊28at.com

當然有些東西,使用AOP,自己定義個注解,來進行切面,做一下日志記錄,監控啥的也是挺好的。c4Y28資訊網——每日最新資訊28at.com

大家根據自己的場景來選擇。c4Y28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-63226-0.htmlJava高頻面試題:過濾器和攔截器兩位難兄難弟區別

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 程序開發中常用的十種算法,你用過幾種?

下一篇: 精準解析 useLayoutEffect 與 useEffect 的執行時機

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久精品91久久香蕉加勒比| 久久精品99无色码中文字幕| 欧美私人网站| 欧美在线视频网站| 一本色道久久88综合日韩精品| 国产日韩欧美在线观看| 欧美日韩免费观看一区三区 | 国产日韩精品在线播放| 欧美劲爆第一页| 蜜桃av久久久亚洲精品| 久久伊人免费视频| 久久婷婷综合激情| 久久久视频精品| 久久精品女人天堂| 欧美一区二区成人6969| 亚洲欧美日韩在线观看a三区| 亚洲一区二区免费看| 亚洲午夜电影| 亚洲一区二区三区涩| 亚洲一二三四久久| 亚洲欧美日韩精品久久奇米色影视| 一区二区三区免费在线观看| 亚洲作爱视频| av成人免费在线| 中国av一区| 亚洲影院一区| 欧美在线免费观看| 国产精品www网站| 欧美www在线| 欧美人与性动交cc0o| 久久精品亚洲精品| 欧美一区二区三区在线观看| 亚洲欧美国产视频| 亚洲影院在线| 亚洲欧美日韩国产一区| 午夜日本精品| 欧美一级成年大片在线观看| 99国产精品视频免费观看| 一区二区精品在线| 曰韩精品一区二区| 亚洲激情在线| 一区二区免费看| 亚洲视频在线视频| 欧美一级午夜免费电影| 久久精品国产一区二区三| 欧美在线网站| 免费日韩成人| 欧美日韩中文| 国模精品一区二区三区| 久久综合中文| 制服丝袜亚洲播放| 亚洲免费小视频| 久久国产精品久久久久久电车| 久久狠狠一本精品综合网| 久久精品成人欧美大片古装| 久久久久久久久久久久久久一区 | 久久精品国产一区二区三区免费看 | 亚洲电影免费在线观看| 在线免费观看日本一区| 亚洲激情女人| 亚洲色图制服丝袜| 久久疯狂做爰流白浆xx| 欧美国产精品久久| 国产精品久久午夜| 国产精品v欧美精品v日韩精品| 国产女主播一区| 亚洲国产99| 一区二区三区视频在线看| 欧美一区二区三区视频免费播放 | 裸体一区二区| 一区二区三区视频观看| 欧美金8天国| 国产精品毛片一区二区三区 | 欧美黑人国产人伦爽爽爽| 在线观看欧美视频| 久久男女视频| 一区一区视频| 另类亚洲自拍| 在线国产精品一区| 免费在线观看精品| 亚洲国产高清自拍| 欧美mv日韩mv国产网站| 亚洲国产日韩欧美| 欧美成年人网| 亚洲精品视频免费观看| 欧美日本免费| 一区二区三区视频在线播放| 欧美天天综合网| 在线亚洲欧美视频| 国产精品日韩高清| 欧美一区二区三区精品| 国产一区二区三区四区三区四| 久久国产一区二区| 伊人久久亚洲美女图片| 免费高清在线一区| 日韩视频不卡| 国产精品高潮呻吟久久av黑人| 亚洲在线视频观看| 国产日韩一区在线| 久久亚洲春色中文字幕| 亚洲国产成人久久综合| 欧美美女视频| 亚洲一区二区三区中文字幕在线 | 欧美自拍偷拍午夜视频| 娇妻被交换粗又大又硬视频欧美| 理论片一区二区在线| 亚洲人精品午夜| 国产精品av免费在线观看| 亚洲欧美成aⅴ人在线观看| 国产一区导航| 男女视频一区二区| 中文日韩在线视频| 国产一区二区高清视频| 免费一区视频| 中文高清一区| 国产一区在线观看视频| 女女同性精品视频| 中文在线资源观看视频网站免费不卡| 国产精品久久久久永久免费观看 | 午夜久久电影网| 136国产福利精品导航| 欧美日韩另类字幕中文| 性久久久久久久久| 在线免费观看日本一区| 欧美日韩一区二区国产| 久久成人免费视频| 日韩视频在线观看免费| 国产欧美日韩亚洲精品| 欧美国产日韩免费| 午夜精品区一区二区三| 91久久精品久久国产性色也91| 国产精品国产三级国产专区53| 久久免费一区| 亚洲综合丁香| 亚洲国产老妈| 国产女人水真多18毛片18精品视频| 免费高清在线视频一区·| 亚洲自拍偷拍网址| 亚洲国产高清视频| 国产乱码精品| 欧美成人综合一区| 亚洲欧美日韩人成在线播放| 亚洲福利国产精品| 欧美日韩在线三级| 久久国产欧美| 亚洲少妇在线| 极品尤物av久久免费看| 欧美日韩国产精品专区| 欧美一区二区三区视频| 亚洲精品美女免费| 国产手机视频一区二区| 欧美日本二区| 亚洲永久视频| 尤物yw午夜国产精品视频明星 | 韩国久久久久| 欧美性大战久久久久久久| 久久久一二三| 一本大道久久a久久综合婷婷| 一色屋精品视频免费看| 国产伦精品一区二区三区高清版| 欧美激情一区二区三区不卡| 午夜在线播放视频欧美| 一本大道久久精品懂色aⅴ| 国产婷婷精品| 欧美午夜视频在线观看| 欧美va天堂va视频va在线| 亚洲免费影视第一页| 在线国产精品播放| 国产区精品在线观看| 欧美精品亚洲| 免费观看不卡av| 久久精品久久综合| 国产精品夜夜夜| 欧美午夜大胆人体| 欧美另类videos死尸| 久久久国产91| 午夜精品亚洲一区二区三区嫩草| 日韩午夜在线播放| 亚洲精品视频免费在线观看| 狠狠色伊人亚洲综合成人| 国产欧美三级| 国产精品一区二区三区久久 | 国产麻豆9l精品三级站| 国产精品久久久999| 欧美视频中文字幕在线| 欧美日韩精品综合| 欧美精品一区二区三区很污很色的| 蜜桃久久av| 免费不卡在线观看av| 久久久噜噜噜久久中文字幕色伊伊| 欧美一区二区高清| 香港成人在线视频| 午夜天堂精品久久久久| 午夜精品三级视频福利| 亚洲欧美激情一区二区| 亚洲一区二区三区在线| 亚洲图片欧美一区| 亚洲一区久久| 性久久久久久久久久久久| 欧美综合国产| 久久久久久久成人| 久久综合久久综合久久综合| 玖玖综合伊人| 欧美高清影院|