目录
当前位置: 首页 > 教程 > Struts2 >

Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什么不同?

精华
小牛编辑
190浏览
2023-03-14
在Struts2的开发时,很多人会问为什么有些声明过滤器类是 “FilterDispatcher“; 而有一些又是“StrutsPrepareAndExecuteFilter“? 但两者都可以正常使用,并有什么区别?

1. FilterDispatcher 示例

...
<filter>
   <filter-name>struts2</filter-name>
   <filter-class>
     org.apache.struts2.dispatcher.FilterDispatcher
   </filter-class>
</filter>
  
<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
...

2. StrutsPrepareAndExecuteFilter 示例

...
<filter>
  <filter-name>struts2</filter-name>
  <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  </filter-class>
</filter>
  
<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
...

回答:

The FilterDispatcher (org.apache.struts2.dispatcher.FilterDispatcher) 被用在早期的Struts2开发,并且在 Struts 2.1.3中它就被废弃了。

如果使用Struts版本 >= 2.1.3, 它总是建议升级到新的过滤器类 –StrutsPrepareAndExecuteFilter (org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter).

参考

  1. FilterDispatcher 文档
  2. StrutsPrepareAndExecuteFilter 文档