关于java:过滤器与拦截器的区别

10次阅读

共计 869 个字符,预计需要花费 3 分钟才能阅读完成。

对于过滤器与拦截器的区别

过滤器 (Filter) 和拦截器 (Interceptor) 都是能够作用于若干种不同的申请门路的组件,都能够对某种申请进行阻止,不容许持续向后执行,也能够抉择放行,依照本来设定的解决流程继续执行!并且,在同一个我的项目中,容许同时存在若干个过滤器或拦截器,以造成过滤器链或拦截器链,如果某个申请波及多个过滤器或拦截器,必须每个过滤器或拦截器都放行,才能够继续执行!

过滤器是 Java EE 中的组件,而拦截器是 SpringMVC 中的组件!只有是 Java EE 我的项目,都能够应用过滤器,然而,只有应用了 SpringMVC 框架,才能够应用拦截器,并且,仅当被 SpringMVC 框架解决的申请才可能被拦截器进行解决,例如应用 SpringMVC 框架时,将 DispatcherServlet 解决申请的门路设置为 *.do,则只有以.do 作为后缀的申请才可能被拦截器解决!

过滤器和拦截器的执行工夫节点、执行的办法的数量都不雷同,过滤器是在所有 Servlet 组件之前执行的!而拦截器的第 1 次执行是在 DispatcherServlet 之后,且在 Controller 组件之前执行的,而且,当拦截器抉择“放行”时,在 Controller 执行之后,和执行最终的响应之前,还会各执行 1 次!

过滤器和拦截器的配置也不雷同,过滤器是在 web.xml 中配置的,在配置过程中,能够配置若干个申请门路,也能够应用星号 (*) 作为通配符,然而,无奈配置例外门路(白名单),而拦截器是在 Spring 的配置文件中进行配置的,其配置形式非常灵活,能够配置若干个申请门路,也能够应用通配符,还能够配置若干个例外门路!

在个别状况下,咱们更关注我的项目的治理,因为过滤器和拦截器都会呈现在真正解决申请的组件之前,所以,都能够实现“阻止”和“放行”的成果,那么,哪个简略、易用、性能更弱小,就应用哪个!所以,更优先举荐应用拦截器解决我的项目中的问题!然而,这也并不代表拦截器就能够齐全取代过滤器,例如,某些处理过程应该呈现在更早的执行工夫节点,就必须应用过滤器,而不能应用拦截器!

正文完
 0