我正在研究这个问题,这样我才能在面试中做出更好的回应。我一直在寻找清晰简洁的答案。
到目前为止,如果我错了或缺乏详细信息,请务必纠正我:
这看起来像是一个准确而完整的答案吗?我应该添加或更正任何内容吗?线程问题/差异怎么样?
答案 0 :(得分:2)
我认为第一点是答案,但你应该能说的不仅仅是
拦截器在struts 2中,过滤器是Servlet API的一部分
事实上,作为一名采访者,我期待并希望你在这里解释一下Servelt API和Web应用程序框架之间的区别,比如Struts 2。这实际上是展示您对整个Java Web应用程序生态系统和基础架构的理解的机会。
可能会有很好的答案:
如何在Servlet过滤器中实现Struts 2框架。
哪些特定用例会调用servlet过滤器 struts 2但在同一个Web应用程序中?
什么是Servlet API,Web应用程序,Web应用程序 框架等?
我猜想,以某种方式回答,表明您对所有这些主题的理解正在寻找。
答案 1 :(得分:2)
过滤器来自Servlet API,拦截器来自Struts 2, 当我们谈论Web应用程序和企业应用程序时会出现差异, filter仅在Web应用程序中使用,而拦截器可以与Web以及企业应用程序一起使用。 两者的生命周期方法也有所不同。
拦截器堆栈会在每次请求时触发。 过滤器仅适用于定义它们的URL。 你根据需要使用其中一个。假设您需要验证每个请求都存在cookie。使用拦截器。假设您需要在某些请求(由网址驱动)上弹出外部应用,请使用过滤器。
答案 2 :(得分:1)
在一次采访中,我回答了这个问题,
拦截器是struts2概念,应用程序开发人员可以控制它。此外,它适用于struts2应用程序边界,它可以访问Actions,ValueStack和其他对象以及Struts2的好东西。
虽然Filter更适合部署时配置。它对应用程序的访问权限有限,并且在大多数情况下,它是服务器中部署的大多数Web应用程序的通用。
如果代码中的逻辑与Application更加耦合,它更适合拦截器,或者如果它的基础结构,我们可以将它放在servlet过滤器中。
答案 3 :(得分:0)
过滤器:强>
<强>拦截器:强>
excludeMethods
或includeMethods
。