【问题标题】:Dispatcher for Filter Mapping过滤器映射调度程序
【发布时间】:2011-02-27 10:59:35
【问题描述】:

我有一个为 Servlet Spec 2.4 编写的应用程序,带有一个为 Servlet Spec 2.3 设计的旧网络服务器。 web.xml 文件的语法如下:

<filter-mapping> 
    <filter-name>sitemesh</filter-name>  
    <url-pattern>*.action</url-pattern>   
    <dispatcher>REQUEST</dispatcher>    
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

如何重写此映射以符合 servlet 2.3?

【问题讨论】:

    标签: java jsp


    【解决方案1】:

    您可以只删除 &lt;dispatcher&gt; 条目。默认情况下,Servlet 2.3 过滤器会分派所有内容,这没关系。 Sitemesh 甚至在其自己的站点上提到它与 Servlet 2.3 兼容。这是their site的摘录:

    SiteMesh 是一个 Servlet 过滤器,因此需要一个符合 Servlet 2.3 规范的容器。

    【讨论】:

    • 我不确定是否在 servlet 2.4 规范中删除所有 标记,过滤器是否始终执行或从不执行。
    • @David:从 2.4 开始,它默认只在 REQUEST 上执行。对于INCLUDEFORWARD,您必须自己指定&lt;dispatcher&gt;(除了REQUEST!)。
    【解决方案2】:

    只需删除 标记即可。

    Servlet 2.3 不支持调度程序。如果你不包含,它没有任何区别。如果您确实包含了 servlet/JSP,则需要重命名它们以便它们不会被过滤以获得与 2.4 一样的确切行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 2019-05-19
      • 1970-01-01
      • 2011-04-10
      • 2014-07-23
      • 2021-12-05
      • 2010-10-23
      相关资源
      最近更新 更多