和整合servlet一样,spring项目中,我们需要在web.xml中通过如下方式整合filter。
*
* FirstFilter
* com.test.filter.FirstFilter
*
*
*
* FirstFilter
* /first
*
而在springboot中没有web.xml这个配置文件。
接下来记录springboot整合filter的两种方式。
一、通过注解整合filter(应该是最常用的一种方式)
参考示例代码:
@WebFilter(filterName="FirstFilter", urlPatterns="/first") //urlPatterns是一个数组,可以配置拦截多个。urlPatterns= {"*.do","*.jsp"}
public class FirstFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("通过注解方式进入拦截器..............");
arg2.doFilter(arg0, arg1);
System.out.println("拦截器结束..............");
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
⚠️:WebFilter注解中urlPatterns是一个数组,可以配置拦截多个,如下:
urlPatterns= {"*.do","*.jsp"}
运用上一篇中的启动类,如下:
@SpringBootApplication
@ServletComponentScan //springboot启动时,扫描servlet并实例化。
public class App1 {
public static void main(String[] args) {
SpringApplication.run(App1.class, args);
}
}
启动访问:http://主机ip:端口/first请求。打印如下:
二、通过返回对象为FilterRegistrationBean的方法整合filter
这个就不记录了,想节省时间,感兴趣自己了解。
启动中需要实现的方法,参考如下:
@Bean
public FilterRegistrationBean getFilterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new FirstFilter());//实例化拦截器
//filterRegistrationBean.addUrlPatterns(new String[] {"*.do","*.jsp"});
filterRegistrationBean.addUrlPatterns("/first");
return filterRegistrationBean;
}