AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

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

徹底明白Filter與Interceptor

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

Filter(過(guò)濾器)

概述

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

工作原理

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

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

應(yīng)用場(chǎng)景

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

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

創(chuàng)建Filter類(lèi)

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 {        // 在請(qǐng)求處理之前執(zhí)行的操作        // 可以對(duì)請(qǐng)求進(jìn)行修改、驗(yàn)證等操作        chain.doFilter(request, response);        // 在響應(yīng)返回客戶(hù)端之前執(zhí)行的操作        // 可以對(duì)響應(yīng)進(jìn)行修改、記錄日志等操作    }    @Override    public void destroy() {        // 銷(xiāo)毀操作    }}

注冊(cè)Filter

在Spring Boot中,我們可以通過(guò)配置類(lèi)或使用@WebFilter注解來(lái)注冊(cè)Filter。QiO28資訊網(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è)置過(guò)濾的路徑        return registrationBean;    }}

Interceptor 攔截器介紹

概述

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

原理

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

基于實(shí)現(xiàn)HandlerInterceptor接口,并重寫(xiě)它的方法。它有如下方法:QiO28資訊網(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)用場(chǎng)景

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

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

創(chuàng)建Interceptor類(lèi)

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è)請(qǐng)求完成后執(zhí)行的操作    }}

注冊(cè)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:在請(qǐng)求進(jìn)入Servlet之前和響應(yīng)返回客戶(hù)端之前執(zhí)行。
  • Interceptor:在Controller方法執(zhí)行前、執(zhí)行后、視圖渲染前以及整個(gè)請(qǐng)求完成后執(zhí)行。

范圍

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

使用場(chǎng)景

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

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

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

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

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

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 小米降噪藍(lán)牙耳機(jī)Necklace分享:聽(tīng)一首歌 讀懂一個(gè)故事

    在今天下午的小米Civi 2新品發(fā)布會(huì)上,小米還帶來(lái)了一款新的降噪藍(lán)牙耳機(jī)Necklace,我們也在發(fā)布結(jié)束的第一時(shí)間給大家?guī)?lái)這款耳機(jī)的簡(jiǎn)單分享。現(xiàn)在大家能見(jiàn)到最多的藍(lán)牙耳機(jī)
  • 6月安卓手機(jī)性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過(guò)去了,我們也迎來(lái)了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會(huì)以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領(lǐng)先
  • 一年經(jīng)驗(yàn)在二線(xiàn)城市面試后端的經(jīng)驗(yàn)分享

    忠告這篇文章只適合2年內(nèi)工作經(jīng)驗(yàn)、甚至沒(méi)有工作經(jīng)驗(yàn)的朋友閱讀。如果你是2年以上工作經(jīng)驗(yàn),請(qǐng)果斷劃走,對(duì)你沒(méi)啥幫助~主人公這篇文章內(nèi)容來(lái)自 「升職加薪」星球星友 的投稿,坐
  • 從 Pulsar Client 的原理到它的監(jiān)控面板

    背景前段時(shí)間業(yè)務(wù)團(tuán)隊(duì)偶爾會(huì)碰到一些 Pulsar 使用的問(wèn)題,比如消息阻塞不消費(fèi)了、生產(chǎn)者消息發(fā)送緩慢等各種問(wèn)題。雖然我們有個(gè)監(jiān)控頁(yè)面可以根據(jù) topic 維度查看他的發(fā)送狀態(tài),
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來(lái)源:價(jià)值研究所 作者:Hernanderz&ldquo;難道就因?yàn)樽约旱囊粋€(gè)產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運(yùn)營(yíng)上的問(wèn)題,選擇逃避了嗎?&rdquo;這一番話(huà),出自百合網(wǎng)聯(lián)合創(chuàng)
  • 自律,給不了Keep自由!

    來(lái)源 | 互聯(lián)網(wǎng)品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶(hù)自由暫時(shí)不好說(shuō),但大概率不能給Keep自由。近日,全球最大的在線(xiàn)健身平臺(tái)Keep正式登陸港交所,努力
  • 華為HarmonyOS 4升級(jí)計(jì)劃公布:首批34款機(jī)型今日開(kāi)啟公測(cè)

    8月4日消息,今天下午華為正式發(fā)布了HarmonyOS 4系統(tǒng),在更流暢的前提下,還帶來(lái)了不少新功能,UI設(shè)計(jì)也有變化,會(huì)讓手機(jī)煥然一新。華為宣布,首批機(jī)型將會(huì)在
  • SN570 NVMe SSD固態(tài)硬盤(pán) 價(jià)格與性能兼具

    SN570 NVMe SSD固態(tài)硬盤(pán)是西部數(shù)據(jù)發(fā)布的最新一代WD Blue系列的固態(tài)硬盤(pán),不僅閃存技術(shù)更為精進(jìn),性能也得到了進(jìn)一步的躍升。WD Blue SN570 NVMe SSD的包裝外
  • “買(mǎi)真退假” 這種“羊毛”不能薅

    □ 法治日?qǐng)?bào) 記者 王春   □ 本報(bào)通訊員 胡佳麗  2020年初,還在上大學(xué)的小東加入了一個(gè)大學(xué)生兼職QQ群。群主&ldquo;七王&rdquo;在群里介紹一些刷單賺
Top