过滤器(Filter)是Java EE中的组件,则任何一个Java的WEB项目都可以使用过滤器;而拦截器(Interceptor)是SpringMVC中的组件,仅当使用了SpringMVC框架才可以使用这个拦截器,并且,仅当被SpringMVC框架处理的请求才有可能被拦截器进行处理,假如将DispatcherServlet的路径映射为*.do,则只有以.do作为后缀的请求才可能被拦截器处理,其它请求是不会被拦截器处理的!
在实际使用时,过滤器的配置相对非常单一,例如:
<filter>
<filter-name></filter-name>
<filter-class></filter-class>
</filter>
<filter-mapping>
<filter-name></filter-name>
<url-pattern></url-pattern>
</filter-mapping>
在整个配置过程中,就只能配置1个映射的URL,尽管可以使用通配符,但是,可能配置的过滤范围不够精准,而拦截器的配置过程中,可以配置若干个拦截路径,也可以配置若干个例外,也可以使用通配符,配置非常灵活!
另外,过滤器是执行在所有Servlet之前的组件,而拦截器是执行在DispatcherServlet之后,在所有Controller之前的组件!
所以,一般情况下,会优先选取拦截器!
本文探讨了Java Web中拦截器与过滤器的功能差异及应用场景。指出拦截器为SpringMVC组件,需配合该框架使用;过滤器则适用于所有Java WEB项目。拦截器配置更灵活,通常优先选用。
337

被折叠的 条评论
为什么被折叠?



