1. 程式人生 > >SpringBoot中使用過濾器Filter-方式一

SpringBoot中使用過濾器Filter-方式一

  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) throws
ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("進入filter過濾器,請求正常,放行!"); chain.doFilter(request, response); } @Override
public 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)