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

本文介绍在SpringBoot项目中整合Filter的两种方法:一是使用@WebFilter注解,二是通过FilterRegistrationBean对象。示例代码展示了如何配置拦截器以处理特定URL模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

和整合servlet一样,spring项目中,我们需要在web.xml中通过如下方式整合filter。

 * <filter>
 *  <filter-name>FirstFilter</filter-name>
 *  <filter-class>com.test.filter.FirstFilter</filter-class>
 * </filter>
 * 
 * <filter-mapping>
 *  <filter-name>FirstFilter</filter-name>
 *  <url-pattern>/first</url-pattern>
 * </filter-mapping>

而在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请求。打印如下:

10120429-54d83a6d27c35f3a.png
参考结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值