2012-01-24 61 views
28

我需要在兩個不同的url上映射相同的servlet。我使用netbeans 7.0.1來管理整個項目,所以我使用友好的界面來修改web.xml文件。是什麼造成的NetBeans是這樣的:許多相同servlet的url模式

<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
    <url-pattern>/url</url-pattern> 
</servlet-mapping> 

這是通過Tomcat 5.5中不會排放任何錯誤讀,但只有第二模式工作,而第一個被忽略。

谷歌搜索我發現,爲Tomcat的正確方法是這樣的一個:

<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>/url</url-pattern> 
</servlet-mapping> 

所以,我的問題:這是一個,但在Tomcat中?什麼語法正在接受其他容器?

感謝, 朱塞佩

回答

39

我估計是使用而不是與容器的問題更多的是與Servlet規範的容器/ netbeans的。你的網豆好像是用規範2.5構建servlet映射,因此你會得到

<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
    <url-pattern>/url</url-pattern> 
</servlet-mapping> 

瞭解更多關於這個here。它說

上一頁servlet的架構的版本允許映射到多個網址,這會導致不必要的重複 整個映射條款的 過濾器過濾mapping.For只有一個url-pattern的。

+0

我想說如果使用舊的規範(2.4),不接受新語法的Tomcat至少應該給出一個錯誤。或者,netbeans應該使用舊的語法來創建兼容的web.xml。不是嗎?新容器是否接受使用許多servlet映射節的舊語法? – eppesuig

+1

@eppesuig我很肯定他們中的大多數都向後兼容:)並且2.5 servlet規範XSD當然允許這樣做。 –

+0

@eppesuig如果您對答案感到滿意,您可以接受它,點擊問題旁邊的勾號,或者您可以對答案進行投票,如果這有助於您的話。接受答案將提高你在這個論壇的聲望。 –

1

Tomcat容器將支持3 URL模式:

  1. 完整的字符序列
  2. /*
  3. *. EXT(星意味着什麼)

/*只推薦一個單框架

如果您使用多個框架

隨即推薦.*