过滤器和拦截器都是Web应用程序中的常用组件,不过它们的功能和使用方式不同。
1.工作位置不同
过滤器在Servlet容器内部工作
拦截器在SpringMVC框架内部工作
2.触发时间不同
过滤器在客户端向服务器发送请求前触发,在请求到达Servlet容器之前进行处理
拦截器是在进入Controller之前触发,即在请求到达SpringMVC之前进行处理
3.监听对象不同
过滤器可以监听的对象由request、response、session、application、servletContext等。
拦截器只能监听处理器方法,即controller中的方法
4.功能不同
过滤器是servlet规范的一部分,主要用于对请求进行预处理和后处理,如编码转换、敏感信息过滤、防止xss等。
拦截器是SpringMVC框架提供的一种机制,主要用来对请求进行控制,比如权限验证、日志记录等。