【Spring的拦截器】于【Servlet的Filter】有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查、日志记录等。
不同的是:
·使用范围不同:【Filter是Servlet规范固定的,只能用于Web程序中】,而【拦截器既可以用户Web程序,也可以用于Application、Swing程序中】。
·规范不同:Filter是在Servlet规范中定义的,是【Servlet容器支持】的,而拦截器是在Spring容器内的,是【Spring框架支持】的。
·使用的资源不同:同其他的代码块一样,拦截器也是一个Spring的组件,归Spring管理,配置在Spring文件中,因此能使用Spring里得任何资源、对象,例如Service对象、数据源、事务管理等,通过Ioc注入道拦截器即可。而Filter则不能。
·深度不同:【Filter在只在Servlet启动前后起作用。而拦截器能够深入到方法前后、异常抛出前后等】,因此拦截器的使用弹性更大一些,所以在使用Spring架构的程序中,要优先使用拦截器。
1、过滤器和拦截器触发时机不一样,
过滤器是在【请求进入容器后,但请求进入servlet之前】进行预处理的。请求结束返回也是,是【在servlet处理完后,返回给前端之前】。
如图:
2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。而过滤器是JavaEE标准,只需依赖servlet api ,不需要依赖spring。
过滤器拦截器运行先后步骤:
其中第2步,SpringMVC的机制是由DispaterServlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的.
3、过滤器的实现基于回调函数。而【拦截器(代理模式)的实现基于反射】,代理分静态代理和动态代理,动态代理是拦截器的简单实现。
何时使用拦截器?何时使用过滤器?
如果是非spring项目,那么拦截器不能用,只能使用过滤器。
如果是处理controller前后,既可以使用拦截器也可以使用过滤器。
如果是处理dispaterServlet前后,只能使用过滤器。
相关推荐
Struts 2 过滤器和拦截器的区别
过滤器和拦截器区别过滤器和拦截器区别过滤器和拦截器区别过滤器和拦截器区别过滤器和拦截器区别
简单理解Struts2中拦截器与过滤器的区别及执行顺序
struts2工作原理及拦截器和过滤器
Filter过滤器与Interceptor拦截器有很多相似
拦截器和过滤器的区别 1、拦截器基于动态代理 , 过滤器基于函数回调 2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求...
浅谈基于过滤器与拦截器的用户访问控制,stuts2中拦截器和过滤器的应用
Spring框架拦截器和过滤器:基于Java开发,包含34个文件,包括28个Java类文件、3个XML配置文件、1个.gitignore文件、1个SQL文件和1个YAML配置文件。该项目是关于Spring框架的拦截器和过滤器的设计,过滤器是Java Web...
该压缩包实现了利用过滤器或者拦截器对登录信息进行验证跳转登陆页的功能,利用的是SpringBoot和thymeleaf,使用前请先看使用说明
拦截器功在对请求权限鉴定方面确实很有用处,在我所参与的这个项目之中,第三方的远程调用每个请求都需要参与鉴定,所以这样做非常方便,而且他是很独立的逻辑,这样做让业务逻辑代码很干净。和框架的其他功能一样,...
清楚解析拦截器和过滤器的关系
1、在SpringBoot中如何实现自定义过滤器(Filter)和拦截器(Interceptor) 2、通过执行案例了解多个过滤器和拦截器的执行顺序 【本案例包含源码以及可执行的jar文件,源码文件建议使用IDEA进行导入查看学习,建议使用...
以上的这些功能,通过一种名为责任链或者拦截器或者过滤器(语义上的区别而技术上没有什么区别,知道做了什么就行了)的设计模式可以实现,那么就来看看什么是责任链的设计模式。 以下内容参考北京尚学堂的马士兵...
java-web servlet 拦截器 过滤器使用 java-web servlet 拦截器 过滤器使用
Struts2编写的通用的禁止用户非法访问非登录页面以外的其他页面的拦截器,过滤器,程序附带运行说明和可执行文件,希望给您的工作或学习带来帮助
过滤器也叫拦截器,在Web开发过程中,为了实现莫些特殊功能,经常要对请求和响应消息进行处理,本实例简单清晰的讲解了过滤起的使用。
拦截器与过滤器[定义].pdf
NULL 博文链接:https://tablemiao.iteye.com/blog/2427356