首先,过滤器和拦截器都可以在请求的过程中插入一手,也可以进行拦腰截断。请求过程:当一个请求进来,先交给Web服务器提供的过滤器,来到Servlet,同时会有一个叫做DispatcherServlet的Servlet进行执行,在DispatcherServlet中就会调用我们的拦截器,再由DispatcherServlet分发给对应的Controller来处理请求,请求处理完之后,就会从调用的链路原路返回,再回到拦截器,再回到过滤器,最终响应给客户端。
区别1:过滤器先执行,它是Servlet规范的一部分更接近于底层,它会在Servlet请求之前和响应之后进行处理;拦截器后执行,它是SpringMVC的一部分更接近业务层,会在Controller请求之前和处理完毕之后进行处理。
其次,使用方式不同,过滤器需要依赖Servlet提供的filtter接口,多个过滤器会根据配置的顺序来决定他们的执行顺序;而拦截器需要依赖SpringMVC提供的HandlerIntercepter接口,多个拦截器的执行顺序由Bean的配置顺序来决定,可以通过order注解来改变执行顺序。
最后,用途不同,拦截器通常用来实现一些跟业务相关不是必须的一些工作,比如:身份认证与授权、接口的性能监控,跨域处理日志记录等;过滤器通常实现一些必要的基础设施工作,比如编码处理、视图响应、请求参数处理和URL重定向等。
标签:拦截器,请求,区别,处理,顺序,过滤器,Servlet From: https://blog.csdn.net/weixin_63908159/article/details/142890797