过滤器
描述:
随web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候才销毁。
作用:
过滤请求和响应,对传入的request,response提前过滤或设置一些信息或参数,然后再传入controller控制层进行业务逻辑处理。
使用:
比如过滤掉非法url(不是login.do的地址请求)没有登陆的用户都过滤掉,或者在传入controller控制层前统一设置字符集,或者去除掉一些非法字符等。
拦截器
描述:
拦截器在AOP中用于在某个方法或字段被访问之前进行拦截,然后在之前或之后加入某些操作。比如日志,安全等;
拦截器链,就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用;
一般拦截器方法都是通过动态代理的方式实现。
作用:
比如通过它来进行权限验证,或者判断用户是否登陆,或者是像12306 判断当前时间是否是购票时间。
区别:
拦截器基于动态代理,过滤器是基于函数回调。
拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器。
拦截器可以在方法前后,异常前后等调用,过滤器只能在请求前后各调用一次。
拦截器可以利用依赖注入,因此在Spring框架程序中,优先拦截器。