2010-06-03 91 views
7

我有一个应用程序为Servlet Spec 2.4编写,它有一个为Servlet Spec 2.3设计的旧webserver。 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?

回答

1

只需删除< dispatcher>标签。

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

9

您可以删除<dispatcher>条目。默认情况下,Servlet 2.3过滤器会发送一切信息,这就好了。 Sitemesh甚至在自己的网站上提到它与Servlet 2.3兼容。下面是从their site的提取物:

SiteMesh的是一个Servlet过滤器,因此需要一个符合Servlet 2.3的说明书的容器。

+0

我不确定如果在servlet 2.4规范中,如果删除所有标签,则过滤器始终执行或从不执行。 – 2011-05-05 15:00:06

+3

@David:自2.4开始,它仅在'REQUEST'上默认执行。对于'INCLUDE'和'FORWARD',你必须自己指定''(除了'REQUEST'!)。 – BalusC 2011-05-05 15:03:29

+0

完美,谢谢! – 2011-06-15 19:57:22