-->

拦截器和过滤器之间的区别 - 这是正确的?(Difference between Intercept

2019-07-28 20:25发布

我研究这个,这样我可以回应在接受采访时更好。 我一直在寻找周围清晰,简明的答案。

到目前为止,并通过各种手段纠正我,如果我错了,或缺少细节:

  1. 过滤器是在Servlet API的一部分,拦截器是Struts的2.(似乎是显而易见的虽然)
  2. 在配置的包请求拦截器栈火灾,而过滤器只适用于他们的映射的URL。
  3. 拦截器可以被配置为执行或不依赖于通过excludeMethods和includeMethods特定目标的操作方法,同时过滤器缺少这一功能。
  4. 过滤器是拦截过滤器模式的实现,而拦截器是拦截模式。

这看起来像一个准确和完整的答案吗? 我要补充或纠正什么? 什么线程问题/区别在哪里?

Answer 1:

我觉得第一点是答案,但你应该可以说不仅仅是

拦截器是在支柱2和过滤器是在Servlet API的一部分

事实上,作为面试官,我会很期待和希望在这里你解释的servelt API和Web应用程序框架之间的差异,如Struts 2到底是什么。 这实际上是为了显示你的整个Java Web应用程序的生态系统和基础设施的认识的机会。

好的答案后摸:

  1. 如何Struts 2框架是一个Servlet过滤器内实施。

  2. 会叫什么具体的用例Servlet过滤器支柱2之外,但在同一Web应用程序中?

  3. 的确什么是在Servlet API,Web应用程序,Web应用程序框架,等等?

在方式显示所有这些主题的理解回答什么是那里寻找,我猜。



Answer 2:

过滤器是由Servlet API中,并拦截来自在Struts 2,差别来自当我们谈论Web应用程序和企业应用程序,过滤器仅用于Web应用程序,而拦截器可以使用Web和企业应用程序中使用。 两者的生命周期方法也不同。

在每次请求拦截器栈火灾。 过滤器只适用于他们为其定义的URL。 您使用一种或另一种视需要而定。 比方说,你需要确认一个cookie的存在为每个请求。 使用拦截器。 比方说,你需要弹出一些要求外部应用程序(由URL驱动的),使用过滤器。



Answer 3:

在采访的一个我回答了这个问题一样,

拦截器是Struts2的概念和应用程序开发人员进行控制。 此外,它的工作原理withing struts2的应用边界,并与Struts2的东西一起访问操作,值栈和其他对象。

虽然过滤器是更适合部署时间配置。 它有应用的机会有限,而且在大多数情况下,其通用于大多数部署在服务器上的web应用程序的。

如果代码逻辑更加再加上应用,其更适合于拦截或者如果其基础设施,我们可以将它放在Servlet过滤器。



Answer 4:

过滤器:

  1. 基于Servlet规范
  2. 执行上的图案上的请求相匹配。
  3. 不可配置方法调用。

拦截器:

  1. 基于Struts2的。
  2. 执行用于所有的请求资格前端控制器(一个Servlet过滤器)。 并且可以被配置成用于特定动作执行而执行的附加拦截器。
  3. 在拦截器方法可被配置是否借助于执行或不excludeMethodsincludeMethods


文章来源: Difference between Interceptors and Filters - Is this right?