过滤器优先于拦截器,过滤功能定义你希望执行的内容,拦截功能定义你想干预或者想中止的内容。
Filter过滤器
Filter是servlet规范定义的,不属于spring框架,拦截请求数据,相比较拦截器更粗粒。Filter有FilterChain概念,一个FilterChain包含多个Filter,在客户端请求request到达servlet之前会经过Filter,过滤通过后才会进行后续操作,同样在操作完成返回给客户端时,也会经过Filter过滤。
1. Filter实现
过滤器实现Filter接口,实现init(),doFilter(),destroy()方法
- Init(),web程序加载时执行,例如Tomcat服务启动时调用
- doFilter(),每次客户端发起请求时均会调用
- destory(),web程序卸载时执行,一般用于容器释放
使用场景:
- 例如过滤请求资源走登录验证等,过滤非法请求
- 字符编码转换等
- 详细记录某些特殊的用户请求操作日志
Interceptor拦截器
1