过滤器:在目标资源之前进行的操作
过滤所有的内容,比如 action、servlet、jsp、html
拦截器:在目标资源之前进行的操作
不能拦截所有的内容,拦截 action,不能拦截 jsp,不能拦截 html
拦截器和过滤器之间有很多相同之处,但是两者之间存在根本的差别。其主要区别为以下几点:
1)拦截器是基于 JAVA 反射机制的,而过滤器是基于函数回调的。
2)拦截器不依赖于 Servlet 容器,而过滤器依赖于 Servlet 容器
3)拦截器只能对 Action 请求起作用,而过滤器可以对几乎所有的请求起作用。
4)拦截器可以访问 Action 上下文、值栈里的对象,而过滤器不能
5)在 Action 的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调
用一次。
分析:
从灵活性上说拦截器功能更强大些,过滤器能做的事情,他都能做,而且可以在请求前,请求后执行,比较灵活。过滤器主要是针对URL地址做一个编码的事情、过滤掉没用的参数、安全校验(比较泛的,比如登录不登录之类),太细的话,还是建议用拦截器。不过还是根据不同情况选择合适的。