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

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

徹底明白Filter與Interceptor

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

Filter(過濾器)

概述

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

工作原理

通過實現javax.servlet.Filter,對請求進行過濾攔截,進而做統一處理。最后將請求交給Servlet進行處理并生成得到響應。得到響應以后,Filter可以對響應再次進行處理。RSd28資訊網——每日最新資訊28at.com

圖片圖片RSd28資訊網——每日最新資訊28at.com

應用場景

如進行過濾低俗文字,危險字符,日志記錄、權限驗證、字符編碼處理等等。如防XSS攻擊的XSSFilter過濾器。RSd28資訊網——每日最新資訊28at.com

代碼實現(SpringBoot舉例)

創建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 {        // 在請求處理之前執行的操作        // 可以對請求進行修改、驗證等操作        chain.doFilter(request, response);        // 在響應返回客戶端之前執行的操作        // 可以對響應進行修改、記錄日志等操作    }    @Override    public void destroy() {        // 銷毀操作    }}

注冊Filter

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

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

Interceptor 攔截器介紹

概述

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

原理

圖片圖片RSd28資訊網——每日最新資訊28at.com

基于實現HandlerInterceptor接口,并重寫它的方法。它有如下方法:RSd28資訊網——每日最新資訊28at.com

  • preHandle方法:目標資源方法執行前執行。返回true則繼續往下執行 返回false則進行攔截。
  • postHandle方法:目標資源方法執行后執行
  • afterCompletion方法:視圖渲染完畢后執行,最后執行。

應用場景

Interceptor主要用于處理與Controller相關的邏輯,比如權限驗證、日志記錄、統一異常處理等。RSd28資訊網——每日最新資訊28at.com

代碼實現

創建Interceptor類

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

注冊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/**") // 設置攔截的路徑                .excludePathPatterns("/api/public/**"); // 設置排除的路徑    }}

Filter與Interceptor的區別及如何選擇

執行時機不同

  • Filter:在請求進入Servlet之前和響應返回客戶端之前執行。
  • Interceptor:在Controller方法執行前、執行后、視圖渲染前以及整個請求完成后執行。

范圍

  • Filter:作用于整個Web應用,不僅限于Spring MVC。
  • Interceptor:僅作用于Spring MVC中的Controller層。

使用場景

  • Filter:適用于通用的請求處理邏輯,比如字符編碼、日志記錄等。
  • Interceptor:適用于與Controller相關的業務邏輯,比如權限驗證、統一異常處理等。

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

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

上一篇: C#委托:實現靈活的方法調用

下一篇: 還是結構體指針寫的代碼看著舒服

標簽:
  • 熱門焦點
  • 直屏旗艦來了 iQOO 12和K70 Pro同臺競技

    旗艦機基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據博主數碼閑聊站帶來的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學弟,最近學習的怎么樣啊 了不起學弟:最近學習的還不錯,每天都在學習,每天都在進步! 了不起:那你最近學習的什么呢? 了不起學弟:最近在學習C
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁&ldquo;充值中心&rdquo;入口上線了本機生活界面。壹覽商業發現,該界面目前主要
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的&ldquo;網紅&rdquo;。7月5日至9日,為期5天的東方甄選&ldquo;甘肅行&rdquo;首次在自有App內直播,
  • 小米MIX Fold 3配置細節曝光:搭載領先版驍龍8 Gen2+罕見5倍長焦

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 7月4日見!iQOO 11S官宣:“雞血版”驍龍8 Gen2+200W快充加持

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項實用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發布的朋友圈
  • 最薄的14英寸游戲筆記本電腦 Alienware X14已可以購買

    2022年1月份在國際消費電子展(CES2022)上首次亮相的Alienware新品——Alienware X14現在已經可以購買了,這款筆記本電腦被譽為世界上最薄的 14 英寸游戲筆
Top