springboot中使用filter
阿新 • • 發佈:2020-08-03
springboot中使用Filter主要有兩種方式:
方式一、使用註解的方式:
首先寫一個Filter類繼承Filter,然後再這個類上加上@WebFilter(urlPatterns = "/*")註解,路徑表示需要過濾的路徑。具體實現如下:
@WebFilter(filterName = "MyFilter",urlPatterns = "/*") public class MyFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throwsServletException, IOException { System.out.println("進入了MyFilter。。。。。。。。。。。"); chain.doFilter(req, resp); } public void init(FilterConfig config) throws ServletException { } }
但是這個時候,Springboot並不知道你加了Filter,所以需要在Main方法上加上@ServletComponentScan註解,表示Servlet元件掃描同時他也可以掃描Filter,可以加上引數basePackages來說明需要掃描的包是哪個。具體如下:
@SpringBootApplication//SpringBoot的全域性的自動配置註解,所有的業務類都要放在子包下,才能自動配置 @ServletComponentScan(basePackages = {"com.kunkun.springboot.servlet","com.kunkun.springboot.filter"})//servlet掃描和過濾器掃描 public class Application { public static void main(String[] args) { //固定的程式碼,啟動SpringBoot程式,初始化Spring容器SpringApplication.run(Application.class, args); } }
這樣就完成了Filter的配置:結果如下:
方式二、使用配置類的方式:
首先實現一個正常的Filter,如下:
public class HeFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { System.out.println("進入了HeFilter。。。。。"); chain.doFilter(req, resp); } public void init(FilterConfig config) throws ServletException { } }
然後實現一個配置類,如下:
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean registrationBean(){ FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new HeFilter()); filterRegistrationBean.addUrlPatterns("/*"); return filterRegistrationBean; } }
這邊基本和Servlet的配置類一樣,輸出結果如下: