首页 > 其他分享 >过滤器和拦截器区别

过滤器和拦截器区别

时间:2023-10-24 15:55:58浏览次数:30  
标签:Override 拦截器 区别 System println 过滤器 public out

过滤器和拦截器区别

Inteceptor Filter
所属包 在spring包 在javax包
属于哪个容器 属于web容器 属于spring容器
资源的使用 不能获取spring的资源 可以获取spring的资源
过滤先后
使用场景 和业务相关 如日志处理 统计 业务无关的公共代码 例如 设置编码

使用例子

@Configuration
public class MyConfig  implements WebMvcConfigurer {
    @Autowired
    MyInteceptor myInteceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInteceptor);
    }
}

@Configuration
public class MyInteceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion");
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}
@WebFilter(urlPatterns = "/*")
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("过滤器:执行 init 方法。");
    }
    @Override
    public void doFilter(ServletRequest servletRequest,
                         ServletResponse servletResponse,
                         FilterChain filterChain) throws IOException, ServletException {
        System.out.println("过滤器:开始执行 doFilter 方法。");
        // 请求放行
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("过滤器:结束执行 doFilter 方法。");
    }
    @Override
    public void destroy() {
        System.out.println("过滤器:执行 destroy 方法。");
    }
}
测试结果:
过滤器:开始执行 doFilter 方法。
preHandle
postHandle
afterCompletion
过滤器:结束执行 doFilter 方法。

总结:

Inteceptor的功能更加强大,因为可以获取spring的资源,优先使用拦截器

标签:Override,拦截器,区别,System,println,过滤器,public,out
From: https://www.cnblogs.com/xiuer211/p/17785013.html

相关文章

  • @Controller和@RestController的区别
    总体上,@Controller和@RestController都是SpringMVC框架中的注解,用于标识一个类是SpringMVCcontroller处理器,可以接收HTTP请求。但它们在处理请求和返回结果方面存在一些不同。返回类型:@Controller:如果使用@Controller注解,那么类中的方法可以直接通过返回String跳转到jsp、......
  • 好好回答下 TCP 和 UDP 的区别!
    写了这么多篇关于TCP和UDP的文章,还没有好好聊过这两个协议的区别,这篇文章我们就来开诚布公的谈一谈。关于TCP和UDP,想必大家都看过一张这样的图。有一个小姑娘在对着瓶口慢慢的喝水,下面写着可靠的传输,少女的衣服没有被水浸湿,这张图被称为TCP。然后又有一个小姑娘在举着水......
  • 深入解析i++和++i的区别及性能影响
    在我们编写代码时,经常需要对变量进行自增操作。这种情况下,我们通常会用到两种常见的操作符:i++和++i。最近在阅读博客时,我偶然看到了有关i++和++i性能的讨论。之前我一直在使用它们,但从未从性能的角度考虑过,这让我突然产生了兴趣。尽管它们看起来相似,但它们之间存在微妙而重要的区别......
  • RBAC中权限过滤器
    首先让我们认识权限过滤器是什么:权限过滤器(AuthorizationFilters)是ASP.NETMVC框架中的一种功能,用于验证用户是否有权限访问特定的控制器或控制器方法。通过权限过滤器,你可以根据用户的身份、角色或其他条件来决定是否允许其执行某个操作。在ASP.NETMVC中,权限过滤器是通过......
  • RBAC中使用行为过滤器和全局异常过滤器
    在学习行为过滤器和异常过滤器是先要认识什么事行为过滤器和异常过滤器行为过滤器(ActionFilters):是ASP.NETMVC框架中的一个功能,用于在控制器方法执行前后插入预定义的逻辑。通过行为过滤器,你可以在不修改原始方法代码的情况下,实现一些常见的横切关注点,例如日志记录、身份......
  • y电容和高压瓷片电容区别对比
    多外观上来看,Y电容和高压瓷片电容非常像,有人甚至这样认为,所谓的Y电容,也就是多了个认证的瓷片电容,事实上真的是这样的吗?Y电容和瓷片电容有区别吗?到底有哪些区别?今天KYET小编就来为大家详细讲解一下。Y电容确实也属于高压瓷片电容:y电容也就是常见的安规电容器的一种,也可以叫做安......
  • 频谱仪的内部衰减和外接衰减器有何区别?对底噪和测试结果有什么影响?
    内部衰减器是指Amplitude菜单的Attenuation,貌似这个值越大频谱仪的底噪越大,那外接衰减器呢?频谱分析仪显示的信号是叠加在平均噪声电平上,这个噪声是由频谱仪自身产生的,大部分来自中频放大器的第一级,它是宽带白噪声,经过中频滤波器后送到包络检波器的平均噪声功率,当输入衰减增加时,降......
  • strcpy、strncpy、memcpy 区别与实现
    strcpy、strncpy、memcpy的区别strcpy描述将一个字符串复制到另一个字符串中实现char*myStrcpy(char*dest,constchar*src){if((NULL==dest)||(NULL==src)){returnNULL;}char*strDest=dest;constchar*strSrc=src;......
  • SWD与JTAG区别及使用情况 最新更新时间
      上图是SEGGER说明书中给出的Jlink引脚图,可以对照着看SWD引脚与JTAG引脚的关系。 这是我手边开发板上的JTAG连接图,这个肯定是能用的。  这个是从网上找来的标准的JTAG连接图,供对照参考。  调试方式既可以用JTAG,也可以用SWD。 以下是一段转自:(http://showvi.c......
  • CSRF和SSRF有什么区别?网络安全入门
    CSRF和SSRF有什么区别?网络安全入门现在是万物互联时代,一切都是信息化的,会涉及到个人隐私信息,一些不法分子可能会利用一些手段获取我们的信息,信息泄露出去便会有危险,因此就诞生了网络安全工程师这个岗位,近几年它的需求量也很大,那CSRF和SSRF有什么区别呢?请看下文:CSRF:说到CSRF,就不得......