亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java過(guò)濾器Filter詳解

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

Filter學(xué)習(xí)

Filter功能

  • 攔截jsp、靜態(tài)圖片文件、靜態(tài)html資源文件
  • 實(shí)現(xiàn)URL級(jí)別的權(quán)限訪問(wèn)控制
  • 過(guò)濾敏感詞匯
  • 壓縮相應(yīng)信息

Filter的工作原理

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

在這里插入圖片描述

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

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

doFilter方法提供給開(kāi)發(fā)者重寫(xiě)過(guò)濾邏輯。

多個(gè)Filter的實(shí)現(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的過(guò)濾順序,通過(guò)setOrder方法執(zhí)行FilterChain的順序,數(shù)字越小,優(yōu)先級(jí)越高。

@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í)行邏輯

在這里插入圖片描述

總結(jié)

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

相關(guān)文章

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

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

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

    springcloud gateway設(shè)置context-path的操作

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

    IDEA在一個(gè)項(xiàng)目空間下管理多個(gè)項(xiàng)目的操作方法

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

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

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

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

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

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

    下面小編就為大家?guī)?lái)一篇Java刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾) 。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • java基礎(chǔ)篇之Date類(lèi)型最常用的時(shí)間計(jì)算(相當(dāng)全面)

    java基礎(chǔ)篇之Date類(lèi)型最常用的時(shí)間計(jì)算(相當(dāng)全面)

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

    Mybatis 自動(dòng)映射(使用需謹(jǐn)慎)

    這篇文章主要介紹了Mybatis 自動(dòng)映射(使用需謹(jǐn)慎),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • SpringBoot?整合?Quartz?定時(shí)任務(wù)框架詳解

    SpringBoot?整合?Quartz?定時(shí)任務(wù)框架詳解

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

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

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

最新評(píng)論