玩轉 SpringBoot 2 快速整合 Filter
阿新 • • 發佈:2019-12-31
概述
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
registration.setName(String name): 設定自定義Filter名稱。
registration.setOrder(int order):設定自定義Filter攔截順序。
測試
啟動 SpirngBoot 專案並通過遊覽器訪問我們的專案下的 index.html。