我研究这个,这样我可以回应在接受采访时更好。 我一直在寻找周围清晰,简明的答案。
到目前为止,并通过各种手段纠正我,如果我错了,或缺少细节:
- 过滤器是在Servlet API的一部分,拦截器是Struts的2.(似乎是显而易见的虽然)
- 在配置的包请求拦截器栈火灾,而过滤器只适用于他们的映射的URL。
- 拦截器可以被配置为执行或不依赖于通过excludeMethods和includeMethods特定目标的操作方法,同时过滤器缺少这一功能。
- 过滤器是拦截过滤器模式的实现,而拦截器是拦截模式。
这看起来像一个准确和完整的答案吗? 我要补充或纠正什么? 什么线程问题/区别在哪里?
我觉得第一点是答案,但你应该可以说不仅仅是
拦截器是在支柱2和过滤器是在Servlet API的一部分
事实上,作为面试官,我会很期待和希望在这里你解释的servelt API和Web应用程序框架之间的差异,如Struts 2到底是什么。 这实际上是为了显示你的整个Java Web应用程序的生态系统和基础设施的认识的机会。
好的答案后摸:
如何Struts 2框架是一个Servlet过滤器内实施。
会叫什么具体的用例Servlet过滤器支柱2之外,但在同一Web应用程序中?
的确什么是在Servlet API,Web应用程序,Web应用程序框架,等等?
在方式显示所有这些主题的理解回答什么是那里寻找,我猜。
过滤器是由Servlet API中,并拦截来自在Struts 2,差别来自当我们谈论Web应用程序和企业应用程序,过滤器仅用于Web应用程序,而拦截器可以使用Web和企业应用程序中使用。 两者的生命周期方法也不同。
在每次请求拦截器栈火灾。 过滤器只适用于他们为其定义的URL。 您使用一种或另一种视需要而定。 比方说,你需要确认一个cookie的存在为每个请求。 使用拦截器。 比方说,你需要弹出一些要求外部应用程序(由URL驱动的),使用过滤器。
在采访的一个我回答了这个问题一样,
拦截器是Struts2的概念和应用程序开发人员进行控制。 此外,它的工作原理withing struts2的应用边界,并与Struts2的东西一起访问操作,值栈和其他对象。
虽然过滤器是更适合部署时间配置。 它有应用的机会有限,而且在大多数情况下,其通用于大多数部署在服务器上的web应用程序的。
如果代码逻辑更加再加上应用,其更适合于拦截或者如果其基础设施,我们可以将它放在Servlet过滤器。