过滤器、拦截器的使用和区别(入门级)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本章节主要介绍过滤器、拦截器的使用和区别。


提示:以下是本篇文章正文内容,下面案例可供参考

一、两者定义和区别

关于过滤器和拦截器的区别如下:

  • 作用域差异:Filter是Servlet规范中规定的,只能用于WEB中,拦截器既可以用于WEB,也可以用于Application、Swing中(即过滤器是依赖于Servlet容器的,和它类似的还有Servlet中的监听器同样依赖该容器,而拦截器则不依赖它);
  • 规范差异:Filter是Servlet规范中定义的,是Servlet容器支持的,而拦截器是Spring容器内的,是Spring框架支持的;
  • 资源差异:拦截器是Spring的一个组件,归Spring管理配置在Spring的文件中,可以使用Spring内的任何资源、对象(可以粗浅的认为是IOC容器中的Bean对象),而Filter则不能使用访问这些资源;
  • 深度差异:Filter只在Servlet前后起作用,而拦截器可以深入到方法的前后、异常抛出前后等更深层次的程度作处理(这里也在一定程度上论证了拦截器是利用java的反射机制实现的),所以在Spring框架中,优先使用拦截器;

二、使用方式

1.过滤器

在SpringBoot中使用过滤器的步骤:

  1. 先定义自定义过滤器类,并实现javax.servlet.Filter类,还可以继承org.springframework.web.filter.GenericFilterBean类(该类实现了javax.servlet.Filter,并预定义一些函数、参数)。
  2. 注册到Spring的IOC容器中,由Spring
    统一管理。实现方式可以在自定义过滤器类中添加@Component注解,或者在启动配置类中添加bean方法。
@Component
public class TokenFilter implements Filter {
   

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   
        System.out.println("TokenFilter:开始执行");
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("TokenFilter:结束执行");
    }
}

若有多个过滤器,并想通过自定义顺序执行这些过滤器(默认顺序是按照英文字符a-z排序),可以如下实现:

  1. 先定义自定义过滤器类,并实现javax.servlet.Filter类&#x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值