我正在使用Tomcat + Spring構建一個Web應用程序,我想定製包含動態內容的404頁面,而不僅僅是一個靜態html文件。例如,如果我在博客網站上工作,我可能想要顯示404頁面上最近發佈的5篇帖子的列表,以指導用戶查看實際內容。如何在自定義Tomcat 404頁面上填充動態信息?
此外,有沒有一種方法可以在生成錯誤頁面時利用錯誤信息?例如,如果錯誤涉及我的應用程序中發生的異常,而不是錯誤的url,我可以顯示堆棧跟蹤嗎?
我正在使用Tomcat + Spring構建一個Web應用程序,我想定製包含動態內容的404頁面,而不僅僅是一個靜態html文件。例如,如果我在博客網站上工作,我可能想要顯示404頁面上最近發佈的5篇帖子的列表,以指導用戶查看實際內容。如何在自定義Tomcat 404頁面上填充動態信息?
此外,有沒有一種方法可以在生成錯誤頁面時利用錯誤信息?例如,如果錯誤涉及我的應用程序中發生的異常,而不是錯誤的url,我可以顯示堆棧跟蹤嗎?
您是從頭開始創建項目嗎?你能夠使用Spring-Boot嗎? Spring Boot提供了很多很好的錯誤處理功能,可以輕鬆修改。
無論哪種方式,如果你只是想使用在web.xml標準錯誤頁面映射,或例如:
<error-page>
<error-code>404</error-code>
<location>/error/404</location>
</error-page>
當你的應用程序返回404個狀態碼,請求將被截取和內部轉發到端點/error/404
- 這可能只是您的Spring應用程序中的任何端點,所以可以執行任何動態的東西,你會在一個正常的控制器。
以編程方式執行此操作,如果沒有Spring Boot,您可以創建一個Filter類來封裝所有請求,並捕獲異常並檢查非2XX響應代碼並正確轉發/處理 - 這基本上是Spring Boot的解決方案實現(請參閱ErrorPageFilter類)。
要訪問有關異常的信息,可以從請求中訪問 - 請參閱這裏獲取類似的答案:https://stackoverflow.com/a/1034667/258813