之前面试贝贝被问到了Interceptor和Filter的区别,我只说了Interceptor是spring级别的,而Filter是java web级别的,这个回答当然是不能使面试官满意的,当然也gg了。在整理一下
Interceptor和Filter的共同点:
都是aop编程思想的体现,都能实现权限检查(登陆验证)、日志记录等
无奈自己对spring深层次的东西了解的太少了,不能展开多说,下去一定要及时补这一块,而且是重点补
Interceptor和Filter的不同点:
1)使用范围不同,filter是servlet规范规定的,只能用于web程序中,而Interceptor既可以用于web程序中,也可以用于application、swing程序中
2)规范不同:filter是在servlet规范中定义的,servlet支持,而拦截器是spring容器内的,是spring框架支持的。感觉就是一个是javaweb级别的,一个是spring级别的
3)深度不同:filter只在servlet前后起作用,而interceptor能够深入到方法前后、异常抛出前后等。因此interceptor的使用具有更大的弹性。所以在spring框架中应该优先使用拦截器
4)使用的资源不同,interceptor可以使用spring中的任何资源、对象等,而filter不能