SpringBoot項(xiàng)目中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) //存在多個(gè)filter時(shí) 指定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);
}
}
啟動(dòng)類中@ServletComponentScan注解和@WebFilter注解配合使用,@ServletComponentScan注解會自動(dòng)掃描帶有@WebFilter注解的類
三、@Bean注解方式
先自定義一個(gè)過濾器:
@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兩個(gè)過濾器,并分別指定了他們執(zhí)行的順序
三、測試
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/getUserInfo")
public String getUserInfo(){
return "獲取成功";
}
}
啟動(dòng)項(xiàng)目:訪問http://localhost:8080/user/getUserInfo
查看控制臺打印的結(jié)果:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于使用swagger整合springMVC的方法
在平時(shí)開發(fā)寫接口文檔的工作時(shí),一般都是word文檔,帶來書寫麻煩、維護(hù)麻煩的問題,比如改了源代碼忘了更新文檔、解釋不明確帶來歧義、無法在線嘗試等等,swagger可以有效解決這類問題,需要的朋友可以參考下2023-04-04
Java實(shí)現(xiàn)評論回復(fù)功能的完整步驟
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)評論回復(fù)功能的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
SpringBoot熱部署啟動(dòng)關(guān)閉流程詳解
Spring?Boot啟動(dòng)熱部署是一種技術(shù),它能讓開發(fā)者在不重啟應(yīng)用程序的情況下實(shí)時(shí)更新代碼。這樣可以提高開發(fā)效率,避免頻繁重啟應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-04-04
Java實(shí)現(xiàn)一個(gè)敏感詞過濾有哪些方法以及怎么優(yōu)化詳解
我們在開發(fā)系統(tǒng)或者應(yīng)用的過程中,經(jīng)常需要對用戶提交的評論或者文章進(jìn)行審核,對其中的敏感詞進(jìn)行校驗(yàn)或者過濾,這篇文章主要介紹了Java實(shí)現(xiàn)一個(gè)敏感詞過濾有哪些方法以及怎么優(yōu)化的相關(guān)資料,需要的朋友可以參考下2025-07-07
簡化API提升開發(fā)效率RestTemplate與HttpClient?OkHttp關(guān)系詳解
這篇文章主要為大家介紹了簡化API,提升開發(fā)效率,RestTemplate與HttpClient?OkHttp關(guān)系介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

