1、 寫一個filter 類
import javax.servlet.*;
import java.io.IOException;
import org.springframework.beans.factory.annotation.Autowired;
@Component // 將Filter交給spring管理,目錄是使@autowired生效
public class DemoFilter implements Filter {
@Autowired
private ProductMapper productMapper;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println(" 進入了filter " );
chain.doFilter(request,response);
}
}
2、注冊filter(即讓filter生效)
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.beans.factory.annotation.Autowired;
@Configuration
public class FilterConfiger {
@Autowired // 一定要注入,才會讓 DemoFilter中的 @Autowrie生效
private DemoFilter demoFilter;
@Bean
// @Order(1) //spring boot會按照order值的大小,越小越先執行。(選用)
// 如果有多個filter , 寫多一個這方法,用不同的方法名 ,setName也要不同
public FilterRegistrationBean configFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(demoFilter);
filterRegistrationBean.addUrlPatterns("/*"); // 配置需要過濾的路徑
filterRegistrationBean.setName("filterDemo");
return filterRegistrationBean;
}
}
也可以換種方式寫,將bean對象傳過去。如下:
filter要用到 studentMapper對象
第一步:先建filter類
import javax.servlet.*;
import java.io.IOException;
public class DemoFilter implements Filter {
private StudentMapper studentMapper;
// 構造函數
public DemoFilter(StudentMapper studentMapper) {
this.studentMapper = studentMapper;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println(" 進入了filter " );
chain.doFilter(request,response);
}
}
第二步,注冊filter
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import javax.annotation.Resource;
@Configuration
public class FilterConfiger {
@Resource
private StudentMapper studentMapper;
@Bean
// @Order(1) //spring boot會按照order值的大小,越小越先執行
public FilterRegistrationBean configFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new DemoFilter(studentMapper)); // new DemoFilter時傳bean過去
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.setName("filterDemo");
return filterRegistrationBean;
}
}