1. 程式人生 > >SpringBoot中使用Filter

SpringBoot中使用Filter

首先編寫自己的Filter:

@WebFilter(filterName="MyFilter",urlPatterns="/*")
public class MyFilter implements Filter{
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub  
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws
IOException, ServletException { HttpServletRequest hrequest = (HttpServletRequest) request; HttpServletResponse hresponse = (HttpServletResponse) response; String requestUri = hrequest.getRequestURI(); //此處Constants.unFilterUrl為筆者自己定義的不進行攔截的路徑,比如(*.img)|(*.png)等靜態資源則不進行攔截 if
(requestUri.matches(Constants.unfilterUrl)){ chain.doFilter(hrequest, hresponse); return ; } ..... 可自由在該方法中新增自己的程式碼 } @Override public void destroy() { // TODO Auto-generated method stub } }

接下來則是在Springboot啟動類中進行配置:
方法一:
在類的上方添加註解@ServletComponentScan(value = {“(此處為Filter類路徑)”})
注意:該註解在springboot 1.3版本後才引入,筆者曾使用springboot 1.2.5版本使用此註解失敗,耗費很久時間才從文件的犄角旮旯裡發現此資訊,得來不易啊。

方法二:
在啟動類中配置@bean

@Bean
public FilterRegistrationBean securityFilter() {
   ServletFilter filter = new MyFilter();
   FilterRegistrationBean registration = new FilterRegistrationBean();
   registration.setFilter(filter);
   registration.addUrlPatterns("/*");
   registration.setName("MyFilter");
   return registration;
}

至此完成自己的Filter配置。。。慢慢享受吧。。