1. 程式人生 > 實用技巧 >【SpringBoot】04.SpringBoot整合Filter的兩種方式

【SpringBoot】04.SpringBoot整合Filter的兩種方式

SpringBoot整合Filter過濾器的兩種方式:

1.通過掃描註解完成Filter元件註冊

  1. 建立一個類,實現Filter介面,實現doFilter()方法

  2. 在該類使用註解@WebFilter,設定filterNameurlPatterns

  3. 在doFilter中編寫程式碼

  4. 編寫啟動類:增加註解@ServletComponentScan

   /**
    * SpringBoot整合Filter 方式一
    */
   //@WebFilter(filterName="FirstFilter" , urlPatterns= {"*.do","*.jsp"})
   @WebFilter(filterName="FirstFilter" , urlPatterns= "/first")
   public class FirstFilter implements Filter {
   
   	@Override
   	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
   			throws IOException, ServletException {
   		System.out.println("進入Filter");
   		chain.doFilter(request, response);
   		System.out.println("離開Filter");
   	}
   }
@SpringBootApplication
@ServletComponentScan
public class App {
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

urlPatterns 是陣列型別的,可以攔截多個 例如:urlPatterns= {".do",".jsp"}

2.通過方法完成Filter元件註冊

  1. 建立一個類,實現Filter介面,實現doFilter()方法
  2. 編寫啟動類
    • 新增一個方法,返回值必須是FilterRegistrationBean
      的物件,他能夠建立Filter物件的例項物件
    • 建立FilterRegistrationBean物件,傳入例項化的Filter物件
    • 新增Url,bean.addUrlPatterns();
    • 返回FilterRegistrationBean物件
    • 在此方法上增加@Bean的註解
	/**
	 * 註冊Filter
	 */
	@Bean
	public FilterRegistrationBean getFilterRegistrationBean() {
		FilterRegistrationBean bean  = new FilterRegistrationBean(new SecondFilter());
		//bean.addUrlPatterns(new String[] {"*.do","*.jsp"});
		bean.addUrlPatterns("/second");
		return bean;
	}