2008-09-15 138 views
2

當Sun的J2EE deploytool自動創建的給定.WAR中的頁面試圖在相同的.WAR文件中加載Servlet時,哪些元兇最有可能導致404 resource not found錯誤?
例如:Java Servlet 404錯誤

HTTP狀態404 -/MyServlet/MyServlet

類型狀態報告

消息/MyServlet/MyServlet

描述所請求的資源(/ MyServlet/MyServlet)不可用。


相關:其中,有多少你會期望得到服務器的特定?例如: Sun Java Application Server vs Tomcat & Catalina

+0

你沒有從你的本地服務器得到響應,但你從stackoverflow服務器得到如此多的響應。 – Acn 2012-01-06 08:00:15

回答

5

在您的web.xml中是否存在有效的< servlet-mapping > for'MyServlet'?這是我過去的頭號罪魁禍首

1

404錯誤意味着找不到請求的資源。正如pkaeding所說,這可能是由於web.xml文件中的servlet映射不正確(或不存在)所致。 Servlet必須在web.xml文件中指定,不僅如此,還必須將它們映射到特定路徑(「url-mapping」)。如果「MyServlet」servlet存在但未映射到基於應用程序上下文根可以使用「/ MyServlet/MyServlet」解析的路徑,並且沒有其他任何東西(即另一個servlet等)使用此路徑解析,則應用程序服務器會拋出一個404表示沒有任何東西映射到給定的路徑。

0

我剛在這個問題上花了大約一個小時拉我的頭髮。 OSX上的Tomcat 5.5.27工作得很好,直到我添加了另一個servlet和servlet映射,其中所有內容都返回了404。我沒有意識到這一點,但是當我添加了一個新的servlet/servlet映射對我會在servlet條目之前放置servlet映射。這是一個很容易犯的錯誤,雖然膝蓋封閉整個應用程序而沒有給出任何類似於明顯的錯誤信息的東西似乎有點極端,但回想起來它是完全合理的。

0

Servlet映射是一個常見問題。但是如果你的web.xml中有任何配件,那麼這些也可能是罪魁禍首。有一點需要認識的是過濾器在任何servlet開始執行之前總是在doFilter之前執行代碼。 (技術上過濾器在doFilter之後執行代碼)在我們的代碼中,我們創建了在某些情況下會返回404的過濾器。有時刪除一些或全部過濾器映射將有助於發現它是否與過濾器映射有關。