SpringBoot項目中filter的兩種使用詳解
一、添加依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
</dependencies>
二、@WebFilter方式
@WebFilter(filterName = "myFilter",urlPatterns = "/*")
@Slf4j
@Order(value = 2) //存在多個filter時 指定filter執(zhí)行順序
public class MyFilter02 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("=======過濾器初始化2=======");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
log.info("過濾器2:請求的sessionID為{},請求的url為{}",httpServletRequest.getSession().getId(),httpServletRequest.getRequestURL());
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
@SpringBootApplication
@ServletComponentScan
public class SpringBootFiltrApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootFiltrApplication.class,args);
}
}
啟動類中@ServletComponentScan注解和@WebFilter注解配合使用,@ServletComponentScan注解會自動掃描帶有@WebFilter注解的類
三、@Bean注解方式
先自定義一個過濾器:
@Slf4j
public class MyFilter01 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("=====初始化過濾器1======");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
log.info("過濾器1:請求路徑:{}",httpServletRequest.getRequestURL());
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
將自定義的過濾器加載到ioc容器中
@Configuration
public class AddFilters {
@Bean
public FilterRegistrationBean addFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new MyFilter01());
filterRegistrationBean.setOrder(1);
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
}
上面可以看出,通過兩種方式分別創(chuàng)建了filter01和filter02兩個過濾器,并分別指定了他們執(zhí)行的順序
三、測試
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/getUserInfo")
public String getUserInfo(){
return "獲取成功";
}
}
啟動項目:訪問http://localhost:8080/user/getUserInfo
查看控制臺打印的結(jié)果:

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于使用swagger整合springMVC的方法
在平時開發(fā)寫接口文檔的工作時,一般都是word文檔,帶來書寫麻煩、維護麻煩的問題,比如改了源代碼忘了更新文檔、解釋不明確帶來歧義、無法在線嘗試等等,swagger可以有效解決這類問題,需要的朋友可以參考下2023-04-04
Java實現(xiàn)一個敏感詞過濾有哪些方法以及怎么優(yōu)化詳解
我們在開發(fā)系統(tǒng)或者應(yīng)用的過程中,經(jīng)常需要對用戶提交的評論或者文章進行審核,對其中的敏感詞進行校驗或者過濾,這篇文章主要介紹了Java實現(xiàn)一個敏感詞過濾有哪些方法以及怎么優(yōu)化的相關(guān)資料,需要的朋友可以參考下2025-07-07
簡化API提升開發(fā)效率RestTemplate與HttpClient?OkHttp關(guān)系詳解
這篇文章主要為大家介紹了簡化API,提升開發(fā)效率,RestTemplate與HttpClient?OkHttp關(guān)系介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10

