2011-11-15 46 views
10

如說,在標題,我想改變默認的錯誤頁,Tomcat和做的:有沒有辦法在tomcat的web.xml中爲所有錯誤代碼配置一個自定義錯誤頁面的使用情況?

<error-page> 
    <error-code>500</error-code> 
    <location>/error_500.html</location> 
</error-page> 

<error-page> 
    <error-code>404</error-code> 
    <location>/error_404.html</location> 
</error-page> 

是否可以使用通配符錯誤代碼像

<error-page> 
    <error-code>*</error-code> 
    <location>/error.html</location> 
</error-page> 

(上面的例子不工作,但有另一種方式?)

感謝

+0

我讀到上面的「社區定義的範圍」的方式,我發現把這個問題作爲主題關閉是錯誤的。問題在於提及「程序員常用的軟件工具」和「軟件開發所特有的實用的,可回答的問題」。如果有疑問,版主應選擇保持開放而不是關閉,因爲計算器與我們的用戶保持相關(基於這樣的觀點,即如果用戶認爲問題有足夠的要求,最好讓其他人蔘與,不)。我的兩分錢。 –

回答

10

沒有,是在Tomcat中沒有辦法。

Servlet 3.0規範支持一個全球性的錯誤頁面,如下所示:

<error-page> 
    <location>/error.html</location> 
</error-page> 

所以理論上它應該至少工作到Tomcat 7.0。但是它在Tomcat 7.0中沒有正確實施。我曾經報道過關於這個的issue 52135,但他們否認了這一點。它可以在其他Servlet 3.0容器上工作。

但是,您可以通過實施Tomcat特定的ErrorReportValve類來解決此問題,然後您將其註冊爲<Host errorReportValveClass>

+0

非常感謝。我還閱讀了您的Bugzilla問題和評論,並仔細檢查了xsd規範。不幸的是,關於可選使用錯誤代碼或異常類型的陳述沒有更多評論。你認爲,值得重新解決這個問題嗎? –

+1

你可以這樣做。當涉及到與Servlet規範不兼容的bug報告時,我體驗到了Tomcat的發明者非常嗤之以鼻。我已經報道過幾個與Servlet規範相關的類似問題;他們常常被立即關閉爲無效(特別是馬克托馬斯),一段時間後,他們最終重新開放並修復。這是一個時間問題:) – BalusC

+2

請注意,Tomcat [issue 52135](https://issues.apache.org/bugzilla/show_bug.cgi?id=52135)現在已經解決了(並且將包含在Tomcat 7.0.29 )。 –

相關問題