位置:首頁 > Java技術 > Struts2教學 > Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什麼不同?

Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什麼不同?

在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 文檔