2010-06-03 61 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