springboot笔记-整合filter的两种方式

和整合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请求。打印如下:

springboot笔记-整合filter的两种方式_第1张图片
参考结果

二、通过返回对象为FilterRegistrationBean的方法整合filter

这个就不记录了,想节省时间,感兴趣自己了解。
启动中需要实现的方法,参考如下:

@Bean
public FilterRegistrationBean getFilterRegistrationBean() {
    FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new FirstFilter());//实例化拦截器
    //filterRegistrationBean.addUrlPatterns(new String[] {"*.do","*.jsp"});
    filterRegistrationBean.addUrlPatterns("/first");
    return filterRegistrationBean;
}

你可能感兴趣的:(springboot笔记-整合filter的两种方式)