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

當(dāng)前位置:首頁 > 科技  > 軟件

徹底明白Filter與Interceptor

來源: 責(zé)編: 時(shí)間:2024-05-16 17:42:34 156觀看
導(dǎo)讀Filter(過濾器)概述Servlet規(guī)范中定義的一種組件,用于在請求進(jìn)入Servlet之前或響應(yīng)返回客戶端之前執(zhí)行一些操作。它依賴于Servlet容器,幾乎可以對任何請求進(jìn)行過濾,隨著Web應(yīng)用的啟動(dòng)而啟動(dòng),Web應(yīng)用停止則Filter銷毀。工作

Filter(過濾器)

概述

Servlet規(guī)范中定義的一種組件,用于在請求進(jìn)入Servlet之前或響應(yīng)返回客戶端之前執(zhí)行一些操作。它依賴于Servlet容器,幾乎可以對任何請求進(jìn)行過濾,隨著Web應(yīng)用的啟動(dòng)而啟動(dòng),Web應(yīng)用停止則Filter銷毀。xM928資訊網(wǎng)——每日最新資訊28at.com

工作原理

通過實(shí)現(xiàn)javax.servlet.Filter,對請求進(jìn)行過濾攔截,進(jìn)而做統(tǒng)一處理。最后將請求交給Servlet進(jìn)行處理并生成得到響應(yīng)。得到響應(yīng)以后,F(xiàn)ilter可以對響應(yīng)再次進(jìn)行處理。xM928資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xM928資訊網(wǎng)——每日最新資訊28at.com

應(yīng)用場景

如進(jìn)行過濾低俗文字,危險(xiǎn)字符,日志記錄、權(quán)限驗(yàn)證、字符編碼處理等等。如防XSS攻擊的XSSFilter過濾器。xM928資訊網(wǎng)——每日最新資訊28at.com

代碼實(shí)現(xiàn)(SpringBoot舉例)

創(chuàng)建Filter類

public class MyFilter implements Filter {    @Override    public void init(FilterConfig filterConfig) throws ServletException {        // 初始化操作    }    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)            throws IOException, ServletException {        // 在請求處理之前執(zhí)行的操作        // 可以對請求進(jìn)行修改、驗(yàn)證等操作        chain.doFilter(request, response);        // 在響應(yīng)返回客戶端之前執(zhí)行的操作        // 可以對響應(yīng)進(jìn)行修改、記錄日志等操作    }    @Override    public void destroy() {        // 銷毀操作    }}

注冊Filter

在Spring Boot中,我們可以通過配置類或使用@WebFilter注解來注冊Filter。xM928資訊網(wǎng)——每日最新資訊28at.com

@Configurationpublic class FilterConfig {    @Bean    public FilterRegistrationBean<MyFilter> myFilter() {        FilterRegistrationBean<MyFilter> registrationBean = new FilterRegistrationBean<>();        registrationBean.setFilter(new MyFilter());        registrationBean.addUrlPatterns("/api/*"); // 設(shè)置過濾的路徑        return registrationBean;    }}

Interceptor 攔截器介紹

概述

Interceptor是Spring框架提供的一種攔截器,與Servlet無關(guān),它依賴于Web框架,用于在Controller方法執(zhí)行前后進(jìn)行處理。與Filter不同,Interceptor是Spring MVC框架特有的組件。它可以將一些共有的行為動(dòng)作給通用化、標(biāo)準(zhǔn)化,進(jìn)而讓代碼更加簡潔,可擴(kuò)展性更高。xM928資訊網(wǎng)——每日最新資訊28at.com

原理

圖片圖片xM928資訊網(wǎng)——每日最新資訊28at.com

基于實(shí)現(xiàn)HandlerInterceptor接口,并重寫它的方法。它有如下方法:xM928資訊網(wǎng)——每日最新資訊28at.com

  • preHandle方法:目標(biāo)資源方法執(zhí)行前執(zhí)行。返回true則繼續(xù)往下執(zhí)行 返回false則進(jìn)行攔截。
  • postHandle方法:目標(biāo)資源方法執(zhí)行后執(zhí)行
  • afterCompletion方法:視圖渲染完畢后執(zhí)行,最后執(zhí)行。

應(yīng)用場景

Interceptor主要用于處理與Controller相關(guān)的邏輯,比如權(quán)限驗(yàn)證、日志記錄、統(tǒng)一異常處理等。xM928資訊網(wǎng)——每日最新資訊28at.com

代碼實(shí)現(xiàn)

創(chuàng)建Interceptor類

public class MyInterceptor implements HandlerInterceptor {    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)            throws Exception {        // 在Controller方法執(zhí)行前執(zhí)行的操作        // 返回true表示繼續(xù)執(zhí)行,返回false表示中斷執(zhí)行        return true;    }    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,                           ModelAndView modelAndView) throws Exception {        // 在Controller方法執(zhí)行后、視圖渲染前執(zhí)行的操作    }    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,                                Exception ex) throws Exception {        // 在整個(gè)請求完成后執(zhí)行的操作    }}

注冊Interceptor

import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class InterceptorConfig implements WebMvcConfigurer {    @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(new MyInterceptor())                .addPathPatterns("/api/**") // 設(shè)置攔截的路徑                .excludePathPatterns("/api/public/**"); // 設(shè)置排除的路徑    }}

Filter與Interceptor的區(qū)別及如何選擇

執(zhí)行時(shí)機(jī)不同

  • Filter:在請求進(jìn)入Servlet之前和響應(yīng)返回客戶端之前執(zhí)行。
  • Interceptor:在Controller方法執(zhí)行前、執(zhí)行后、視圖渲染前以及整個(gè)請求完成后執(zhí)行。

范圍

  • Filter:作用于整個(gè)Web應(yīng)用,不僅限于Spring MVC。
  • Interceptor:僅作用于Spring MVC中的Controller層。

使用場景

  • Filter:適用于通用的請求處理邏輯,比如字符編碼、日志記錄等。
  • Interceptor:適用于與Controller相關(guān)的業(yè)務(wù)邏輯,比如權(quán)限驗(yàn)證、統(tǒng)一異常處理等。

本文鏈接:http://www.www897cc.com/showinfo-26-88563-0.html徹底明白Filter與Interceptor

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: C#委托:實(shí)現(xiàn)靈活的方法調(diào)用

下一篇: 還是結(jié)構(gòu)體指針寫的代碼看著舒服

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 把LangChain跑起來的三個(gè)方法

    使用LangChain開發(fā)LLM應(yīng)用時(shí),需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個(gè)步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進(jìn)行快速上手?本片講解3個(gè)把LangChain跑起來
  • 分享六款相見恨晚的PPT模版網(wǎng)站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網(wǎng)站旨在為全球Office用戶提供豐富的高品質(zhì)原創(chuàng)PPT模板、實(shí)用文檔、數(shù)據(jù)圖表及個(gè)性化定制服務(wù)。優(yōu)點(diǎn):OfficePLUS是微軟官方網(wǎng)站,囊括PPT模板、Word模
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個(gè)人開發(fā)仿造稿定設(shè)計(jì)的圖片編輯器到現(xiàn)在,不知不覺已過去一年時(shí)間了,期間我經(jīng)歷了裁員失業(yè)、面試找工作碰壁,寒冬下一直沒有很好地履行計(jì)劃.....這些就放在日
  • 自動(dòng)化在DevOps中的力量:簡化軟件開發(fā)和交付

    自動(dòng)化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動(dòng)化工具和方法,DevOps團(tuán)隊(duì)可以實(shí)現(xiàn)以下目標(biāo):消除手動(dòng)和重復(fù)性任務(wù)。簡化流程。在整個(gè)軟件開發(fā)生命周期中實(shí)現(xiàn)更
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標(biāo)系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法。可以用來發(fā)現(xiàn)應(yīng)用程序、操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議等中的漏洞或
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨(dú)家獲悉,拼多多在其APP內(nèi)上線了&ldquo;本地生活&rdquo;入口,位置較深,位于首頁的&ldquo;充值中心&rdquo;內(nèi),目前主要售賣美食相關(guān)的
  • 華為發(fā)布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發(fā)者大會(huì)2023(HDC.Together)大會(huì)上,HarmonyOS 4正式發(fā)布。自2019年發(fā)布以來,HarmonyOS一直以用戶為中心,經(jīng)歷四年多的發(fā)展HarmonyOS已
  • 郭明錤稱華為和江淮汽車合作開發(fā)問界MPV,定價(jià)100萬左右、計(jì)劃明年量產(chǎn)

    8 月 1 日消息,郭明錤今天在 Medium 平臺(tái)發(fā)布博文,稱華為正在和江淮汽車合作,開發(fā)售價(jià)在 100 萬元的問界 MPV,預(yù)計(jì)在 2024 年第 2 季度量產(chǎn),銷量目標(biāo)為
  • 3699元!iQOO Neo8 Pro頂配版今日首銷:1TB UFS 4.0同價(jià)位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro兩個(gè)版本,其中標(biāo)準(zhǔn)版搭載高通驍龍8+,而Pro版更是首發(fā)搭載了聯(lián)發(fā)科天璣9200+旗艦
Top 主站蜘蛛池模板: 济阳县| 大关县| 彰武县| 汝南县| 类乌齐县| 东山县| 乾安县| 额济纳旗| 全南县| 沾益县| 清镇市| 烟台市| 垦利县| 师宗县| 五峰| 萍乡市| 土默特右旗| 斗六市| 嘉黎县| 波密县| 北安市| 塘沽区| 枣阳市| 巩留县| 扶沟县| 屯留县| 双桥区| 乃东县| 壶关县| 乌兰浩特市| 浠水县| 炉霍县| 湖南省| 漠河县| 盐山县| 江北区| 仙游县| 松桃| 津南区| 桦甸市| 瑞昌市|