SpringBoot中使用過濾器Filter-方式一
阿新 • • 發佈:2018-12-10
SpringBoot中使用Filter與使用Servlet方式方法相同,也是有兩種,都是一種是通過註解,一種是通過配置類,因此,Filter部分講解就很簡潔了。本例借用Servlet中的程式碼,演示示例。
一、新建一個過濾器,實現Filter介面,自動生成三個重寫的介面方法,其中doFilter是核心的方法。
package cn.com.winson.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig;import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter;
/*過濾所有的請求*/ @WebFilter(urlPatterns = "/*") public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throwsServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("進入filter過濾器,請求正常,放行!"); chain.doFilter(request, response); } @Overridepublic void destroy() { } }
二、程式入口類中,新增Servlet掃描器,新增掃描filter所在的包:
package cn.com.winson; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @SpringBootApplication /* Fiter掃描器同Servlet */ @ServletComponentScan(basePackages = { "cn.com.winson.filter", "cn.com.winson.servlet" }) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
三、執行程式,訪問結果為:
控制檯列印了經過過濾器的輸出語句:
證明請求經過了過濾器過濾。
總結:
一、攔截器和過濾器的區別,使用上:攔截器是攔截controller,過濾器是攔截jsp。
二、使用格式類似Servlet,掃描器也是同一個註解開啟的(@ServletComponentScan)