欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java過濾器Filter詳解

 更新時間:2021年08月25日 10:40:15   作者:木筆の園子  
這篇文章主要介紹了java過濾器中Filter,發(fā)送請求時,如果有不符合的信息將會被filter進行攔截,如果符合則會進行放行。如果感興趣可以來學習一下

Filter學習

Filter功能

  • 攔截jsp、靜態(tài)圖片文件、靜態(tài)html資源文件
  • 實現(xiàn)URL級別的權限訪問控制
  • 過濾敏感詞匯
  • 壓縮相應信息

Filter的工作原理

看源碼可以看出來,F(xiàn)ilter接口中有3個方法:init、doFilter、destory

在這里插入圖片描述

init方法,初始化Filter,F(xiàn)ilter在服務器啟動階段被實例化。并且調(diào)用init方法,init方法只執(zhí)行一次,因為Filter只被實例化一次。

destory方法也好理解,就是銷毀Filter,釋放內(nèi)存,在運行結束時調(diào)用此方法當。長時間沒有用戶訪問,或者項目重新部署,或者服務器重新啟動的時候,會銷毀所有的Filter對象,銷毀之前會先調(diào)用Filter對象的destroy方法,完成銷毀前的準備工作。也是只執(zhí)行一次。

doFilter方法提供給開發(fā)者重寫過濾邏輯。

多個Filter的實現(xiàn)

public class AFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("輸出filter2的init方法");
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        System.out.println("輸出filter2的doFilter方法之前");
        filterChain.doFilter(request, response);
        System.out.println("輸出filter2的doFilter方法之后");
    }
    @Override
    public void destroy() {
        System.out.println("輸出filter2的destroy方法");
    }
}
public class BFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("輸出filter1的init方法");
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        System.out.println("輸出filter1的doFilter方法之前");
        filterChain.doFilter(request, response);
        System.out.println("輸出filter1的doFilter方法之后");
    }
    @Override
    public void destroy() {
        System.out.println("輸出filter1的destroy方法");
    }
}

配置Filter的過濾順序,通過setOrder方法執(zhí)行FilterChain的順序,數(shù)字越小,優(yōu)先級越高。

@Configuration
public class WebConfig {
    @Bean
    public FilterRegistrationBean filter1() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        AFilter aFilter = new AFilter();
        filterRegistrationBean.setFilter(aFilter);
        filterRegistrationBean.setOrder(1);
        return filterRegistrationBean;
    }
    @Bean
    public FilterRegistrationBean filter2() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        BFilter bFilter = new BFilter();
        filterRegistrationBean.setFilter(bFilter);
        filterRegistrationBean.setOrder(2);
        return filterRegistrationBean;
    }
}

Filter的執(zhí)行邏輯

在這里插入圖片描述

總結

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • Java面試題沖刺第四天--數(shù)據(jù)庫

    Java面試題沖刺第四天--數(shù)據(jù)庫

    這篇文章主要為大家分享了最有價值的三道數(shù)據(jù)庫面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結構和算法相關的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • springcloud gateway設置context-path的操作

    springcloud gateway設置context-path的操作

    這篇文章主要介紹了springcloud gateway設置context-path的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • IDEA在一個項目空間下管理多個項目的操作方法

    IDEA在一個項目空間下管理多個項目的操作方法

    這篇文章主要介紹了IDEA如何在一個項目空間下管理多個項目,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Java多線程阻塞與喚醒代碼示例

    Java多線程阻塞與喚醒代碼示例

    本文主要向大家分享了Java多線程中的阻塞與喚醒的相關內(nèi)容,通過這篇文章大家可以大致了解到進入線程阻塞狀態(tài)和可執(zhí)行狀態(tài)的方法,需要的朋友可以了解下。
    2017-09-09
  • Java 使用Socket正確讀取數(shù)據(jù)姿勢

    Java 使用Socket正確讀取數(shù)據(jù)姿勢

    這篇文章主要介紹了Java 使用Socket正確讀取數(shù)據(jù)姿勢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾)

    Java刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾)

    下面小編就為大家?guī)硪黄狫ava刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾) 。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • java基礎篇之Date類型最常用的時間計算(相當全面)

    java基礎篇之Date類型最常用的時間計算(相當全面)

    這篇文章主要給大家介紹了關于java基礎篇之Date類型最常用的時間計算的相關資料,Java中的Date類是用來表示日期和時間的類,它提供了一些常用的方法來處理日期和時間的操作,需要的朋友可以參考下
    2023-12-12
  • Mybatis 自動映射(使用需謹慎)

    Mybatis 自動映射(使用需謹慎)

    這篇文章主要介紹了Mybatis 自動映射(使用需謹慎),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • SpringBoot?整合?Quartz?定時任務框架詳解

    SpringBoot?整合?Quartz?定時任務框架詳解

    這篇文章主要介紹了SpringBoot整合Quartz定時任務框架詳解,Quartz是一個完全由Java編寫的開源作業(yè)調(diào)度框架,為在Java應用程序中進行作業(yè)調(diào)度提供了簡單卻強大的機制
    2022-08-08
  • 微信小程序后端Java接口開發(fā)的詳細步驟

    微信小程序后端Java接口開發(fā)的詳細步驟

    現(xiàn)在微信小程序越來越火了,相信不少人都通過各種途徑學習過微信小程序或者嘗試開發(fā),本文就介紹了微信小程序后端Java接口開發(fā)的詳細步驟,感興趣的同學可以學習一下
    2021-11-11

最新評論