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>

 

答案
FilterDispathcer (org.apache.struts2.dispatcher.FilterDispatcher 在早期的Struts2开发中使用,从Struts 2.1.3开始,它已不推荐使用。
如果你使用的Struts的版本 >= 2.1.3,推荐升级到新的Filter-StrutsPrepareAndExecuteFilter  (org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)。

 

参考:

  1. FilterDispatcher documentation
  2. StrutsPrepareAndExecuteFilter documentation

 

posted @ 2012-08-02 09:58  星晴  阅读(1577)  评论(1编辑  收藏