拦截器和过滤器之间的区别
Spring内部就有一个拦截器,比如事物拦截器、日志的拦截器,实现的原理就是就是使用AOP的切面,进行配置切点,在配置拦截器中有配置前置通知、后置通知、异常通知和环绕通知。
只需要写一个拦截器的类,内部配置方法
Spring的拦截器其实和servlet内的过滤器filter的作用其实差不多,两者其实没有什么可比性,两者不属于同一个技术体系内部的,若真的有区别,就是一个执行时机的区别,只是在项目中,请求先经过servlet的过滤器,才会进入到Spring,进入Spring项目内部,才会执行拦截器的功能。
理解
-
过滤器(filter)
filter是javaweb的servlet体系内,依赖servlet容器,一般用于对请求request和响应response的信息进行过滤,比如:过滤参数、字符编码、敏感字符等
-
拦截器(Interceptor)
interceptor是SpringMVC体系内,依赖Spring容器,基于AOP动态代理实现的,一般常用于对业务层的业务方法进行处理,比如实现系统日志、事务机制、权限检查、性能监控等,通过拦截器就比较好实现。虽然过滤器也是可以实现日志记录、权限检查等效果,但是过滤器只能在servlet前后执行,而拦截器则可以深入到方法执行前后、异常抛出前后执行,所以在Spring体系内,推荐使用拦截器进行日志和事务的实现。