最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Filter在springboot中的使用方法詳解

 更新時(shí)間:2023年08月12日 10:35:30   作者:bibiwannbe  
這篇文章主要介紹了Filter在springboot中的使用方法詳解,filter(過(guò)濾器)作用于在intreceptor(攔截器)之前,不像intreceptor一樣依賴于springmvc框架,只需要依賴于serverlet,需要的朋友可以參考下

Filter 過(guò)濾器

Filter何時(shí)進(jìn)行url過(guò)濾

filter(過(guò)濾器)作用于在intreceptor(攔截器)之前,不像intreceptor一樣依賴于springmvc框架,只需要依賴于serverlet。

Filter在spring /springboot中如何使用

1.自定義Filter

比較原始的一種方法是定義一個(gè)MyFilter實(shí)現(xiàn)javax.servlet.Filter接口

public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        // 對(duì)request或 response 進(jìn)行處理
        // 調(diào)用filter鏈中的下一個(gè)filter
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

另一種方法的自定義Filter,繼承springframework.web.filter.OncePerRequestFilter,可以對(duì)同一個(gè)請(qǐng)求,只經(jīng)過(guò)一次過(guò)濾

public class MyFilter extends OncePerRequestFilter {
    /**此處不能@override doFilter方法
     *  因?yàn)镺ncePerRequestFilter中 doFilter方法已經(jīng)是final
     *
     */
    //自定義處理方法
    public void interrupt(HttpServletResponse response, ErrorCode code){
        //此處對(duì)response進(jìn)行處理
    }
    //重載OnecePerRequestFilter方法
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain){
    //調(diào)用自定義處理方法
    interrupt(response,code);
    //對(duì)request 、response進(jìn)行處理
    }
}

OncePerRequestFilter中的方法

修飾符和類型方法和描述
voiddoFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
此doFilter實(shí)現(xiàn)存儲(chǔ)“已過(guò)濾”的請(qǐng)求屬性,如果屬性已經(jīng)存在,則繼續(xù)進(jìn)行而不再過(guò)濾。
protected abstract voiddoFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)和doFilter相同功能,但保證在單個(gè)請(qǐng)求線程中每個(gè)請(qǐng)求只調(diào)用一次。
protected java.lang.StringgetAlreadyFilteredAttributeName()
返回標(biāo)識(shí)已過(guò)濾請(qǐng)求的請(qǐng)求屬性的名稱。
protected booleanisAsyncDispatch(HttpServletRequest request)
javax.servlet.DispatcherType.ASYNCServlet 3.0中引入的調(diào)度程序類型意味著可以在單個(gè)請(qǐng)求的過(guò)程中在多個(gè)線程中調(diào)用過(guò)濾器。
protected booleanisAsyncStarted(HttpServletRequest request)
請(qǐng)求處理是否處于異步模式,這意味著在退出當(dāng)前線程后不會(huì)提交響應(yīng)
protected booleanshouldNotFilter(HttpServletRequest request)
可以在子類中重寫以進(jìn)行自定義篩選控制,返回true以避免過(guò)濾給定的請(qǐng)求。
protected booleanshouldNotFilterAsyncDispatch()
javax.servlet.DispatcherType.ASYNCServlet 3.0中引入的調(diào)度程序類型意味著可以在單個(gè)請(qǐng)求的過(guò)程中在多個(gè)線程中調(diào)用過(guò)濾器。
protected booleanshouldNotFilterErrorDispatch()
是否過(guò)濾錯(cuò)誤調(diào)度,例如servlet容器處理和映射錯(cuò)誤時(shí)web.xml

2.注冊(cè)自定義Filter

在springboot中可以寫一個(gè)配置類,使用@Bean注入myFilterBean

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
@Configuration
public class MyFilterConfig {
   @Bean
    public FilterRegistrationBean myFilterBean(MyFilter filter) {
        FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();
        filterRegistrationBean.setFilter(filter);//設(shè)置為自定義的過(guò)濾器MyFilter
        filterRegistrationBean.addUrlPatterns("/*");//攔截所有請(qǐng)求
        filterRegistrationBean.setOrder(1);//優(yōu)先級(jí)為1
        return filterRegistrationBean;
    }
    //可注冊(cè)多個(gè)自定義的過(guò)濾器
}

如果是使用xml配置則在web.xml配置如下( 注意配置多個(gè)filter時(shí)優(yōu)先級(jí)由filter的配置順序決定優(yōu)先級(jí))

<filter>
    <filter-name>myFilter</filter-name>
    <filter-class>com.text.filter.myFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>myFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

到此這篇關(guān)于Filter在springboot中的使用方法詳解的文章就介紹到這了,更多相關(guān)Filter使用方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IDEA2020.2.3

    IDEA2020.2.3 "reading maven projects"卡住的問(wèn)題

    這篇文章主要介紹了IDEA2020.2.3 "reading maven projects"卡住的問(wèn)題及問(wèn)題原因探究,通過(guò)多種方法給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-10-10
  • 不調(diào)用方法實(shí)現(xiàn)hutool導(dǎo)出excel圖片示例詳解

    不調(diào)用方法實(shí)現(xiàn)hutool導(dǎo)出excel圖片示例詳解

    這篇文章主要為大家介紹了不調(diào)用方法實(shí)現(xiàn)hutool導(dǎo)出excel圖片示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java解決No enclosing instance of type PrintListFromTailToHead is accessible問(wèn)題的兩種方案

    Java解決No enclosing instance of type PrintListFromTailToHead

    這篇文章主要介紹了Java解決No enclosing instance of type PrintListFromTailToHead is accessible問(wèn)題的兩種方案的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • mapstruct的用法之qualifiedByName示例詳解

    mapstruct的用法之qualifiedByName示例詳解

    qualifiedByName的意思就是使用這個(gè)Mapper接口中的指定的默認(rèn)方法去處理這個(gè)屬性的轉(zhuǎn)換,而不是簡(jiǎn)單的get?set,今天通過(guò)本文給大家介紹下mapstruct的用法之qualifiedByName示例詳解,感興趣的朋友一起看看吧
    2022-04-04
  • 基于mybatis-plus QueryWrapper 排序的坑

    基于mybatis-plus QueryWrapper 排序的坑

    這篇文章主要介紹了mybatis-plus QueryWrapper 排序的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java環(huán)境變量為什么要配置path和classpath詳細(xì)解答

    java環(huán)境變量為什么要配置path和classpath詳細(xì)解答

    為何配置path?為何配置classpath?當(dāng)時(shí)初學(xué)java時(shí)只是關(guān)心如何做而不去關(guān)心這些問(wèn)題,接下來(lái)介紹一下,感興趣的朋友可以參考下哦
    2013-01-01
  • 一篇文章詳解Java異常處理

    一篇文章詳解Java異常處理

    異常處理是編程語(yǔ)言或計(jì)算機(jī)硬件里的一種機(jī)制,用于處理軟件或信息系統(tǒng)中出現(xiàn)的異常狀況(即超出程序正常執(zhí)行流程的某些特殊條件),這篇文章主要給大家介紹了關(guān)于Java異常處理的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • Java String保存字符串的機(jī)制

    Java String保存字符串的機(jī)制

    Java中字符串以什么格式來(lái)存儲(chǔ)?Java 中的 Unicode 字符串會(huì)按照 Latin1或者 UTF16 的編碼格式保存在 String 中,本文就詳細(xì)的介紹了一下,感興趣的可以了解一下
    2021-05-05
  • java 數(shù)組轉(zhuǎn)list的兩種方式

    java 數(shù)組轉(zhuǎn)list的兩種方式

    這篇文章主要介紹了java 數(shù)組轉(zhuǎn)list的兩種方式,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • SpringBoot?自定義starter?yaml提示失效問(wèn)題及解決方法

    SpringBoot?自定義starter?yaml提示失效問(wèn)題及解決方法

    在自定義starter后,必不可少會(huì)有properties配置參數(shù)需要指定,而在有時(shí)又不知道為什么出現(xiàn)這個(gè)問(wèn)題,這篇文章主要介紹了SpringBoot?自定義starter?yaml提示失效問(wèn)題,需要的朋友可以參考下
    2022-12-12

最新評(píng)論

太仆寺旗| 美姑县| 绥宁县| 华宁县| 泰来县| 两当县| 丹江口市| 顺义区| 扶余县| 洪泽县| 两当县| 鄂伦春自治旗| 观塘区| 南安市| 四子王旗| 吴桥县| 屏南县| 林口县| 临武县| 龙川县| 临洮县| 景东| 郸城县| 介休市| 义马市| 曲周县| 克什克腾旗| 准格尔旗| 夹江县| 宾阳县| 南投县| 中阳县| 西丰县| 泸西县| 海伦市| 昌平区| 柘荣县| 木里| 三河市| 阜宁县| 保靖县|