两个Struts过滤器之间的区别是什么?

5

我在 web.xml 中看到了两种 Struts 2 过滤器。

  1. org.apache.struts2.dispatcher.FilterDispatcher
  2. org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

请告诉我这两个过滤器之间的区别?


3
如果您正在使用 Struts 版本 >= 2.1.3,强烈建议升级到新的过滤器类 - StrutsPrepareAndExecuteFilter (org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)。请参阅http://www.mkyong.com/struts2/difference-between-struts-2-filterdispatcher-and-strutsprepareandexecutefilter/。 - Walid
1
请参阅:http://struts.apache.org/development/2.x/docs/webxml.html。 - Aleksandr M
我想从代码中获取一些原因,但不在家庭计算机附近... 不管怎样,StrutsPrepareAndExecuteFilter是两个过滤器中较新的。如果您检查相同的包,还有一个准备和一个单独的执行过滤器。这使得其他组件在过滤器级别更好地与struts2交互。我认为准备过滤器加载了执行操作所需的所有内容,但不启动执行。这使得第三方组件可以与struts2交互(我没有足够的创造力想出任何用例)。StrutsPrepareAndExecuteFilter只是将这两个过滤器剪切并粘贴到一起。 - Quaternion
一个类。所以我相信只需维护这一个类,这就是FilterDispacher被弃用的原因。 - Quaternion
1个回答

4
新的过滤器出现的原因如下:
  1. FilterDispatcher及其部署存在许多问题。
  2. 新的过滤器提供了更好的方式来启用自定义和覆盖。
  3. 使开发人员清楚地了解过滤器正在执行哪些处理。
  4. 使调度过程更加灵活,以支持像OSGi或插件系统中的本机操作等功能。
其中主要的驱动原因是,之前的Filter Dispatcher存在很多问题,另一个原因是向OSGI转移。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接