1. 程式人生 > 程式設計 >玩轉 SpringBoot 2 快速整合 Filter

玩轉 SpringBoot 2 快速整合 Filter

概述

SpringBoot 中沒有 web.xml, 我們無法按照原來的方式在 web.xml 中配置 Filter 。但是我們可以通過 JavaConfig(@Configuration +@Bean)方式進行配置。通過FilterRegistrationBean 將自定義 Filter 新增到 SpringBoot 的過濾鏈中。

實戰操作

實戰操作通過定義一個攔截所有訪問專案的URL的 Filter來進行演示的。

首先定義一個統一訪問 URL 攔截的 Filter。程式碼如下:

public class UrlFilter implements Filter {
    private Logger log =  LoggerFactory.getLogger(UrlFilter.class);
 
    @Override
    public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
            throws IOException,ServletException {
    HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        String requestURI = httpServletRequest.getRequestURI();
        StringBuffer requestURL = httpServletRequest.getRequestURL();
        log.info("requestURI:" +requestURI+" "+"requestURL:"+requestURL);
        chain.doFilter(httpServletRequest,response);
    }
 
}複製程式碼

通過 javaConfig方式配置 SpringBoot 過濾鏈類 FilterRegistrationBean,具體程式碼如下:

@Configuration
public class FilterConfig {
    @Bean
    public FilterRegistrationBean filterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new UrlFilter());
        List<String> urlList = new ArrayList<String>();
        urlList.add("/*");
        registration.setUrlPatterns(urlList);
        registration.setName("UrlFilter");
        registration.setOrder(1);
        return registration;
    }
}複製程式碼

FilterRegistrationBean 中方法介紹:

registration.setFilter(Filter filter):設定我們自定義Filter物件。

registration.setUrlPatterns(Collection urlPatterns):設定自定義Filter需要攔截的URL的集合。

registration.setName(String name): 設定自定義Filter名稱。

registration.setOrder(int order):設定自定義Filter攔截順序。

測試

啟動 SpirngBoot 專案並通過遊覽器訪問我們的專案下的 index.html。在這裡插入圖片描述

在這裡插入圖片描述