springboot配置過濾器和多個攔截器、執(zhí)行順序(案例詳解)
過濾器配置的兩種方法
注解配置
@WebFilter+包掃描@ServletComponentScan(“com.jl.springboottest”),
首先我們定義一個MyFilter 實現(xiàn)Filter接口。重寫里面的三個方法
@Order(1)
@WebFilter(filterName = "myFilter1",urlPatterns = {"/hello/*"})
public class DemoFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("come");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("out");
}
@Override
public void destroy() {
System.out.println("destroy");
}
}代碼說明:
1.@WebFilter注解,filterName屬性表示filter的名稱,urlPatter表示要攔截的URL資源,可以是一個或者多個。用于將一個類聲明為過濾器,該注解將會在部署時被容器處理,容器將根據(jù)具體的屬性配置將相應(yīng)的類部署為過濾器。該注解具有下表給出的一些常用屬性 ( 以下所有屬性均為可選屬性,但是 value、urlPatterns、servletNames 三者必需至少包含一個,且 value 和 urlPatterns 不能共存,如果同時指定,通常忽略 value 的取值 )
2.@Order(1)表示如果有多個攔截器的話就是設(shè)置這個攔截器的運行等級,數(shù)字越小,越先執(zhí)行
3.init()方法只會執(zhí)行一次,初始化過濾器。
4.doFilter()核心方法,配置過濾器的邏輯代碼。
5.destroy()只會在項目停止或者是項目重新部署的時候才會執(zhí)行。
配置完上面的之后我們還需要在啟動類加上一個掃描包的注解,開啟包掃描。@ServletComponentScan(“com.example.demofilter.filter”),當(dāng)然你也可以不用寫包的具體地址,不傳參數(shù),但是建議是傳參數(shù),并且這個采參數(shù)也可以傳多個的。
以上就完成了一個Filter的基本配置,運行項目即可看到效果,還有一種非注解形式的配置方式。


java配置
我們可以通過自己定義一個java配置文件,將自定義的Filter 注冊到到FilterRegistrationBean里面。
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean registFilter(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new MyFilter());
registrationBean.addUrlPatterns("/*");
registrationBean.setName("Filter1");
registrationBean.setOrder(1);
return registrationBean;
}
}這個配置和上面的注解配置類似。上面注解實現(xiàn)的原理也是這樣的,雖然是兩種不同的方法,但是是一樣的原理。


攔截器配置
創(chuàng)建兩個攔截器,重寫方法


創(chuàng)建配置類,實現(xiàn)WebMvcConfigurer

order越小,越先執(zhí)行,否則按照register配置的順序執(zhí)行
執(zhí)行順序

參考文檔:
https://www.cnblogs.com/Timeouting-Study/p/16078773.html
https://blog.csdn.net/K_520_W/article/details/124529633
到此這篇關(guān)于springboot配置過濾器和多個攔截器、執(zhí)行順序的文章就介紹到這了,更多相關(guān)springboot過濾器和攔截器執(zhí)行順序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?MVC基于注解的使用之JSON數(shù)據(jù)處理的方法
這篇文章主要介紹了Spring?MVC基于注解的使用JSON數(shù)據(jù)處理,json是一種輕量級的數(shù)據(jù)交換格式,是一種理想的數(shù)據(jù)交互語言,它易于閱讀和編寫,同時也易于機器解析和生成,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-05-05
idea中MavenWeb項目不能創(chuàng)建Servlet的解決方案
這篇文章主要介紹了idea中MavenWeb項目不能創(chuàng)建Servlet的解決方案,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
關(guān)于Java如何用好線程池的方法分享(建議收藏)
這篇文章主要來和大家分享幾個關(guān)于Java如何用好線程池的建議,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解一下2023-06-06
Java中定時任務(wù)的全方位場景實現(xiàn)思路分析
在開發(fā)過程中,根據(jù)需求和業(yè)務(wù)的不同經(jīng)常會有很多場景需要用到不同特性的定時任務(wù),本文將針對這些場景,提供不同的一個實現(xiàn)思路,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2023-12-12
SpringSecurity根據(jù)自定義異常返回登錄錯誤提示信息(賬戶鎖定)
本文介紹了在SpringSecurity中根據(jù)自定義異常返回登錄錯誤提示信息的方法,特別是在賬戶鎖定時,通過記錄輸錯次數(shù)、重寫校驗方法并拋出自定義異常,感興趣的可以了解一下2025-01-01
Mybatis 實現(xiàn)一個搜索框?qū)Χ鄠€字段進行模糊查詢
這篇文章主要介紹了Mybatis 實現(xiàn)一個搜索框?qū)Χ鄠€字段進行模糊查詢,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01

