SpringBoot —— Filter 過濾器


SpringBoot——實現過濾器Filter

1、Filter過濾器

(1) 主要用來過濾用戶請求的,允許我們對用戶的請求進行前置處理和后置處理。面向切面編程AOP。

例如:實現URL級別的權限控制、過濾非法請求等。

(2)Filter是依賴於Servlet容器(Filter接口在Servlet包下),增強版的servlet

(3)自定義Filter

方法一 : 1、實現javax.Servlet.Filter接口

              2、重寫方法

                   init() 初始化

                   doFilter() 對請求進行過濾

                   destroy() 銷毀過濾器后自行的操作,對資源進行回收

             3、創建配置類中注冊自定義的過濾器

方法二:@WebFilter()注解,進行參數配置

               @ServletComponentScan

2、Filter接口如何實現攔截功能

(1)doFilter() 實現對用戶請求的過濾

(2)流程:

       1、用戶發送請求到web服務器,請求先到過濾器

       2、過濾器對請求進行一些處理(過濾請求參數、修改返回給客戶端的response內容、判斷是否讓用戶訪問該接口等)

       3、用戶請求完畢

3、定義多個過濾器,決定過濾器執行順序

在配置類中調用FilterRegistrationBean.setOrder()方法進行決定。

filterRegistrationBean.setOrder(2); //2 表示在1 執行后再執行

filterRegistrationBean.setOrder(1); //1 表示先執行

@Configuration
public class MyFilterConfig {
   @Autowired
   MyFilter myFilter;
   @Autowired
   MyFilter2 myFilter2;
   
@Bean
public FilterRegistrationBean<MyFilter> setUpMyFilter() {
   FilterRegistrationBean<MyFilter> filterRegistrationBean = new FilterRegistrationBean<>();
   filterRegistrationBean.setOrder(2);
   filterRegistrationBean.setFilter(myFilter);
   filterRegistrationBean.setUrlPatterns(new ArrayList<>(Arrays.asList("/api/*")));

   return filterRegistrationBean;
}

@Bean
public FilterRegistrationBean<MyFilter2> setUpMyFilter2() {
   FilterRegistrationBean<MyFilter2> filterRegistrationBean = new FilterRegistrationBean<>();
   filterRegistrationBean.setOrder(1);
   filterRegistrationBean.setFilter(myFilter2);
   filterRegistrationBean.setUrlPatterns(new ArrayList<>(Arrays.asList("/api/*")));
   return filterRegistrationBean;
}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM