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

Filter在springboot中的使用方法詳解

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

Filter 過濾器

Filter何時進行url過濾

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

Filter在spring /springboot中如何使用

1.自定義Filter

比較原始的一種方法是定義一個MyFilter實現javax.servlet.Filter接口

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

另一種方法的自定義Filter,繼承springframework.web.filter.OncePerRequestFilter,可以對同一個請求,只經過一次過濾

public class MyFilter extends OncePerRequestFilter {
    /**此處不能@override doFilter方法
     *  因為OncePerRequestFilter中 doFilter方法已經是final
     *
     */
    //自定義處理方法
    public void interrupt(HttpServletResponse response, ErrorCode code){
        //此處對response進行處理
    }
    //重載OnecePerRequestFilter方法
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain){
    //調用自定義處理方法
    interrupt(response,code);
    //對request 、response進行處理
    }
}

OncePerRequestFilter中的方法

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

2.注冊自定義Filter

在springboot中可以寫一個配置類,使用@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);//設置為自定義的過濾器MyFilter
        filterRegistrationBean.addUrlPatterns("/*");//攔截所有請求
        filterRegistrationBean.setOrder(1);//優(yōu)先級為1
        return filterRegistrationBean;
    }
    //可注冊多個自定義的過濾器
}

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

<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>

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

相關文章

  • IDEA2020.2.3

    IDEA2020.2.3 "reading maven projects"卡住的問題

    這篇文章主要介紹了IDEA2020.2.3 "reading maven projects"卡住的問題及問題原因探究,通過多種方法給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-10-10
  • 不調用方法實現hutool導出excel圖片示例詳解

    不調用方法實現hutool導出excel圖片示例詳解

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

    Java解決No enclosing instance of type PrintListFromTailToHead

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

    mapstruct的用法之qualifiedByName示例詳解

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

    基于mybatis-plus QueryWrapper 排序的坑

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

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

    為何配置path?為何配置classpath?當時初學java時只是關心如何做而不去關心這些問題,接下來介紹一下,感興趣的朋友可以參考下哦
    2013-01-01
  • 一篇文章詳解Java異常處理

    一篇文章詳解Java異常處理

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

    Java String保存字符串的機制

    Java中字符串以什么格式來存儲?Java 中的 Unicode 字符串會按照 Latin1或者 UTF16 的編碼格式保存在 String 中,本文就詳細的介紹了一下,感興趣的可以了解一下
    2021-05-05
  • java 數組轉list的兩種方式

    java 數組轉list的兩種方式

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

    SpringBoot?自定義starter?yaml提示失效問題及解決方法

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

最新評論

会昌县| 涞源县| 黑水县| 吕梁市| 台前县| 邹平县| 罗山县| 涞水县| 项城市| 东明县| 兴文县| 钟山县| 渭南市| 陵川县| 疏附县| 白水县| 昭觉县| 晴隆县| 当雄县| 上栗县| 蒙阴县| 虎林市| 松桃| 叙永县| 罗源县| 牙克石市| 汾西县| 双流县| 高碑店市| 彭阳县| 宜都市| 衢州市| 武城县| 库车县| 海阳市| 克拉玛依市| 无棣县| 安岳县| 皋兰县| 旌德县| 犍为县|