国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

Springboot工程中使用filter過程解析

瀏覽:9日期:2023-05-28 18:45:26

一、什么是filter

過濾器實際上就是用來對web資源進行攔截,做一些處理后再交給下一個過濾器或servlet處理 通常都是用來攔截request進行處理的,也可以對返回的response進行攔截處理 。

filter可以在請求到達servlet前或者請求完成響應后進行后續的處理。

二、在springboot工程中使用filter

創建一個filter,并使用注解配置該filter的名稱和攔截路徑等屬性

@WebFilter(filterName = 'AFilter',urlPatterns = '/*')public class AFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { System.out.println('AFilter 開始執行'); chain.doFilter(req, resp); System.out.println('AFilter 執行完成'); } public void init(FilterConfig config) throws ServletException { }}

上面的代碼在doFilter方法中寫該過濾器的具體執行邏輯,chain.doFilter用來把請求交給下一個過濾器或者servlet。

在啟動類上使用注解@ServletComponentScan來掃描自定義的過濾器

@SpringBootApplication@ServletComponentScanpublic class BillAdminApplication { public static void main(String[] args) { SpringApplication.run(BillAdminApplication.class,args); }}

這樣自定義的過濾器就會被掃描到,就可以起作用。

三、過濾器的執行順序

如果項目中配置了多個過濾器,并且使用的是注解配置,請求到來時過濾器名稱字母順序靠前的過濾器會先執行;給客戶端返回響應時過濾器的執行順序和請求時的相反。

四、注意

使用以上這種方式來加載自定義過濾器時,不能自定義過濾器的執行順序,只能通過限定類名順序來達到目的。

五、使用FilterRegistrationBean 來注冊過濾器

當需要自定義過濾器的執行順序時,可以使用FilterRegistrationBean來實現。

先創建一個過濾器,比如上邊的AFilter.java,不再需要注解@WebFilter,

再啟動類或者配置類中注入一個如下的bean

@Bean public FilterRegistrationBean registrationBean1(){ FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean(); filterRegistrationBean.setFilter(new AFilter()); filterRegistrationBean.addUrlPatterns('/*'); filterRegistrationBean.setOrder(2); return filterRegistrationBean; }

使用這種方式,創建一個filterRegistrationBean對象,再設置其相關屬性,可以通過order屬性來設置過濾器的執行順序,order值越小表示過濾器的優先級越高,會先執行。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 宣汉县| 定陶县| 波密县| 阿巴嘎旗| 文山县| 舞钢市| 义马市| 苗栗县| 乐至县| 临海市| 江源县| 罗江县| 望都县| 拉萨市| 怀来县| 泰顺县| 佳木斯市| 于都县| 堆龙德庆县| 阳朔县| 浑源县| 深州市| 肥东县| 深州市| 岳普湖县| 同心县| 高安市| 玉屏| 宾川县| 绥中县| 阿坝县| 阜平县| 武威市| 定远县| 邢台县| 高密市| 漳浦县| 汶上县| 张家港市| 镇雄县| 赫章县|