springboot通过@WebFilter(urlPatterns)配置Filter过滤路径

使用@WebFilter注解时有个坑往往注意不到
根据@WebFilter注解的源码注释可以知道,只需要用写一个类去实现filter,然后给类加上@WebFilter注解,就可以了,不管用的话回想是不是没代理成功,再给类加个@Component注解,测试一下,成功拦截了。

@Component //这个记得去掉~
@WebFilter(filterName = "testFilter", urlPatterns = {"/addCommOnFlowAlarmP"})
public class testFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
    }

    @Override
    public void destroy() {
    }
}

但是实际上,真的结束了吗?
并没有,通过测试发现,不管在@WebFilter的urlPatterns参数中如何配置,还是所有请求都会拦截,为什么,因为@WebFilter根本就没有生效。
既然没有生效,那么Filter为什么能拦截呢?
因为这个类实现了Filter,而且还被@Component扫描生成了bean,当然会生成一个默认的全局拦截器啊!
当然,如果愿意在doFilter里进行判断,也不是不能用- -!

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
	if("/home/addCommOnFlowAlarmP".equals(((HttpServletRequest) request).getRequestURI())){
    // TODO
	}else {
		chain.doFilter(request, response);
	}
}

但是重点不在这,要用@WebFilter(urlPatterns)来配置过滤规则嘛!
只需要在启动类上加一个注解@ServletComponentScan就解决啦~
不过要记得把@Component注解去掉,不然就会有两个过滤器了!不信可以试试,一个请求会进来两次~

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值