MyEclipse自动生成的web.xml是这样的:
  <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>*.action</url-pattern>
  </filter-mapping></web-app>
而我看到许多书上是这样的:
  <filter>
   <filter-name>struts2</filter-name>
   <filter-class>
   org.apache.struts2.dispatcher.FilterDiapatcher
   </filter-class>
  </filter>
  <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>*.action</url-pattern>
  </filter-mapping></web-app>
请问:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    和   org.apache.struts2.dispatcher.FilterDispatcher 是什么关系呢?

解决方案 »

  1.   

    FilterDispatcher和StrutsPrepareAndExecuteFilter都是struts2的核心过滤器.!
    从struts2.0.x到struts2.1.3(不包含),核心过滤器是FilterDispatcher,而从2.1.3开始, 升级换代了,变成StrutsPrepareAndExecuteFilter, 然而FilterDispatcher也还是可以用的.!
    但是在某些特定的环境下面必须是用StrutsPrepareAndExecuteFilter,而且还得用这个过滤器的拆分体.!
    比如说用sitemesh之类.!
      

  2.   

    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter是struts2升级版本中的,忘了是在哪个版本开始使用的,你看名字也能看出点东西,Prepare And Execute,可以看下源码,我使用的是2.1.8版本。在struts2-core-2.1.8.1.jar里面是有FilterDiapatcher的,而在子包.ng.filter下有StrutsPrepareFilter和StrutsExecuteFilter,StrutsPrepareAndExecuteFilter,新版本的都是使用的StrutsPrepareAndExecuteFilter,至于原因我也不太清楚,没有仔细研究过源码,想是在某些方面提高了吧。
      

  3.   

    因为struts2 版本不同,Struts 2.0的版本就用:
      org.apache.struts2.dispatcher.FilterDiapatcher 
    struts 2.1.8的版本用 :       
         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
      

  4.   

       FilterDiapatcher  这就是核心类啊 如果你想知道S2的工作流程的话
        看这个链接啊 http://blog.csdn.net/ruixj/archive/2007/11/11/1879079.aspx   
      

  5.   

    trutsPrepareAndExecuteFilter  最新版的是这个~
      

  6.   

    FilterDispatcher这个类是struts2 的2.1.3以前的版本的,另外那个类是2.1.6的版本的类