Filter简述和@Filter注解使用

如题所述

第1个回答  2022-07-07

Filter主要用于对用户请求进行预处理,也可以对请求的响应结果进行后续处理。它与Servlet的区别在于,不能直接向用户生成响应结果。

用户发送请求,Filter首先拦截用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应结果进行后续处理。

(1)根据需要可以检查并修改HttpServletRequest请求头和请求数据。

(2)根据需要可以检查并修改HttpServletResponse响应头和响应数据。

(1)权限过滤:Filter负责对请求进行权限检查,过滤非法请求。

(2)日志记录:对某些特殊操作进行日志记录。

(3)设置字符集。

servlet3.0前,Filter的注入通常采用xml方式注入,但是在servlet3.0后,开始支持通过注解的方式进行注入。

(1)基于注解@Filter注入

采用@Filter注入时,需要通过注解 @ServletComponentScan 配置扫描路径,如果是SpringBoot项目,通常添加到启动类上。

(2)通过配置类进行注入

过滤器Filter的功能看起来和拦截器Interceptor类似,那么他们是否可以互相替换呢?具体有哪些差别呢?后面会继续分析