首页 > 其他分享 >过滤器(Filter)和拦截器(Interceptor)的区别

过滤器(Filter)和拦截器(Interceptor)的区别

时间:2024-06-11 20:34:34浏览次数:12  
标签:容器 拦截器 请求 Spring Filter 过滤器 Interceptor Servlet

 

过滤器(Filter)和拦截器(Interceptor)在JavaWeb开发用于拦截和处理请求的机制,但有显著的区别和不同的业务场景。

 

概念:

 过滤器(Filter)是基于servlet容器回调实现,可以拦截请求和响应的所有内容,包括静态资源和动态资源。

 拦截器(Interceptor)是基于Spring框架,只作用于Spring的上下文中。拦截器只能拦截请求到Controller之前,或响应返回视图之前的操作。

 

区别:

 实现方式:

  过滤器是基于Servlet规范的Filter接口实现。过滤器在Servlet容器中配置,并由容器管理其生命周期。

  拦截器是基于Spring的HandlerInterceptor接口实现。拦截器Spring的配置文件过注解定义,并由SpringIOC容器管理其生命周期。

 触发时机:

  过滤器是在Servlet执行前后进行处理的。可以拦截所有进入Servlet容器的请求,包括静态资源(如HTML、CSS、JS文件)和动态资源(如Servlet、JSP)。

  拦截器是在MVC的请求处理。到达Controller之前或返回视图之前进行拦截的,无法拦截静态资源的请求。

 应用场景:

  过滤器主要用于过滤请求和响应。如:字符编码处理、安全控制、日志记录。

  拦截器可以进行更为复杂的业务逻辑处理。如:权限控制、日志记录、性能监控、事务控制。

 执行机制:

  过滤器由Servlet容器回调完成。过滤器链在请求到达Servlet之前和响应离开Servlet之后一次执行。

  拦截器通过Spring的动态代理(反射)实现。拦截器链在请求到达Controller之前和视图渲染之前依次执行。

 生命周期:

  过滤器在Servlet容器管理,随Servlet容器的启动和关闭而创建与销毁。过滤器链在web.xml文件中配置,也可以通过注解配置。

  拦截器是SpringIOC容器管理,随Spring应用上下文的创建和销毁而创建和销毁。可以在Spring的配置文件中配置,也可以注解配置。

 

标签:容器,拦截器,请求,Spring,Filter,过滤器,Interceptor,Servlet
From: https://www.cnblogs.com/warmNest-llb/p/18242661

相关文章

  • dubbo~全局异常拦截器的使用与设计缺陷~续
    上一次的介绍,主要围绕如何统一去捕获异常,以及为每一种异常添加自己的Mapper实现,并且我们知道,当在ExceptionMapper中返回非200的Response,不支持application/json的响应类型,而是写死的text/plain类型。Filter为二方包异常手动捕获参考:https://blog.csdn.net/2401_84048290/article......
  • WPF DataContext order and filter via CollectionViewSource.GetDefaultView(DataCon
    //xaml<Windowx:Class="WpfApp146.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • dubbo~全局异常拦截器的使用与设计缺陷
    异常拦截器ExceptionMapper在JAX-RS(JavaAPIforRESTfulWebServices)中,ExceptionMapper接口用于将Java异常映射到HTTP响应。通过实现ExceptionMapper接口,你可以自定义如何处理特定类型的异常,并生成相应的HTTP响应。优先级和选择当有多个ExceptionMapper可用于处理同一类型的......
  • 251 Resource Filter
    示例新建FeatureDisabledResourceFilter.csusingMicrosoft.AspNetCore.Mvc;usingMicrosoft.AspNetCore.Mvc.Filters;namespaceCRUDExample.Filters.ResourceFilters{  publicclassFeatureDisabledResourceFilter:IAsyncResourceFilter  {   ......
  • 252 Authorization Filter
    示例新建TokenAuthorizationFilter.csusingMicrosoft.AspNetCore.Mvc;usingMicrosoft.AspNetCore.Mvc.Filters;namespaceCRUDExample.Filters.AuthorizationFilters{  publicclassTokenAuthorizationFilter:IAsyncAuthorizationFilter  {   ......
  • 255 IAlwaysRunResultFilter
    示例新建PersonsAlwaysRunResultFilter.csusingMicrosoft.AspNetCore.Mvc.Filters;namespaceCRUDExample.Filters.ResultFilters{  publicclassPersonsAlwaysRunResultFilter:IAsyncAlwaysRunResultFilter  {    publicasyncTaskOnResult......
  • SpringSecurity6从入门到实战之Filter过滤器回顾
    SpringSecurity6从入门到实战之Filter过滤器回顾如果没有SpringSecurity这个框架,我们应该通过什么去实现客户端向服务端发送请求时,先检查用户是否登录,登录了才能访问.否则重定向到登录页面流程图如下官方文档:https://docs.spring.io/spring-security/reference/6.0......
  • SpringBootWeb 篇-深入了解 Filter 过滤器与 Interceptor 拦截器(实现登录校验 Filter
    ......
  • spring:十、springMVC拦截器
    目录包结构坐标引入mvc配置文件springmvc.xmlweb.xml配置控制器拦截器多拦截器执行顺序:包结构坐标引入<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.......
  • JavaWeb笔记整理+图解——Filter过滤器
    欢迎大家来到这一篇章——Filter过滤器监听器和过滤器都是JavaWeb服务器三大组件(Servlet、监听器、过滤器)之一,他们对于Web开发起到了不可缺少的作用。ps:想要补充Java知识的同学们可以移步我已经完结的JavaSE笔记,里面整理了大量详细的知识点和图解,可以帮你快速掌握Java编程的......