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).