在web開發中,我們經常用到過濾器Filter,用來對所有web資源:例如Jsp, Servlet, 靜态圖檔檔案或靜态 html 檔案等進行攔截,進而實作一些特殊的功能。這篇文章,我們簡要示範一下spring boot自定義Filter
一、自定義過濾器
首先,我們自己寫一個過濾器類實作Filter接口
MyFilter.java
package com.example.demo.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* Created by yuxl on 2019/1/24.
* 自定義過濾器,列印出請求的url
*/
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
System.out.println(request.getRequestURL());
filterChain.doFilter(servletRequest,servletResponse);
}
}
二、編寫配置類,裝配過濾器
MyConfiguration.java
package com.example.demo.configruation;
import com.example.demo.filter.MyFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Created by yuxl on 2019/1/24.
* 配置類 裝配過濾器
*/
@Configuration
public class MyConfiguration {
@Bean
public FilterRegistrationBean setFilterRegistration(){
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new MyFilter());
registration.addUrlPatterns("/*");
registration.addInitParameter("paramName", "paramValue");
registration.setName("MyFilter");
registration.setOrder(1);
return registration;
}
}
三、運作調試
啟動項目,浏覽器輸入通路url,背景攔截器列印出請求url
感謝大家百忙之中抽出寶貴的時間閱讀本文,歡迎大家批評指正。微信掃下面二維碼添加公衆号議碼評川,可擷取java web、大資料、人工智能等相關學習資料。