Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什么不同?
精华
小牛编辑
194浏览
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).
参考
- FilterDispatcher 文档
- StrutsPrepareAndExecuteFilter 文档