如何讓Spring MVC顯示自定義的404 Not Found頁面

i042416發表於2018-08-20

不知道大家對千篇一律的404 Not Found的錯誤頁面是否感到膩歪了?其實透過很簡單的配置就能夠讓Spring MVC顯示您自定義的404 Not Found錯誤頁面。

在WEB-INF的web.xml裡新增一個新的區域:

如何讓Spring MVC顯示自定義的404 Not Found頁面

意思是一旦有404錯誤發生時,顯示resouces資料夾下的404.jsp頁面。

<error-page><error-code>404</error-code><location>/resources/404.jsp</location></error-page>

現在可以隨意開發您喜歡的個性化404錯誤頁面了。

如何讓Spring MVC顯示自定義的404 Not Found頁面

如何讓Spring MVC顯示自定義的404 Not Found頁面

完畢之後,隨便訪問一個不存在的url,故意造成404錯誤,就能看到我們剛才配置的自定義404 Not Found頁面了。

如何讓Spring MVC顯示自定義的404 Not Found頁面

如果想在Spring MVC裡實現一個通用的異常處理邏輯(Exception handler), 能夠捕捉所有型別的異常,比如透過下面這種方式丟擲的異常,可以按照下面介紹的步驟來做。

如何讓Spring MVC顯示自定義的404 Not Found頁面

1. 新建一個類,繼承自SimpleMappingExceptionResolver:

public class GlobalDefaultExceptionHandler extendsSimpleMappingExceptionResolver {public GlobalDefaultExceptionHandler(){
System.out.println("GlobalDefaultExceptionHandler constructor called!");
}@Overridepublic String buildLogMessage(Exception ex, HttpServletRequest request) {
System.out.println("Exception caught by Jerry");
ex.printStackTrace();return "Spring MVC exception: " + ex.getLocalizedMessage();
}

2. 在Spring MVC的Servlet配置檔案裡,將剛才建立的類作為一個Bean配置進去:

如何讓Spring MVC顯示自定義的404 Not Found頁面

Bean的ID設定為simpleMappingExceptionResolver,class設定為步驟一建立的類的包含namespace的全名。建立一個名為defaultErrorView的property,其value為generic_error, 指向一個JSP view:generic_error.jsp。

<bean id="simpleMappingExceptionResolver" class="com.sap.exception.GlobalDefaultExceptionHandler"><property name="exceptionMappings"><map><entry key="Exception" value="generic_error"></entry></map></property><property name="defaultErrorView" value="generic_error"/></bean>

generic_error.jsp的原始碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Generic Error Page of Jerry</title></head><body><h2>Unknown Error Occured, please contact Wang, Jerry.</h2></body></html>

現在可以做測試了。我之前透過下列語句拋了一個異常:

throw new Exception("Generic Exception raised by Jerry");

這個異常成功地被我自己實現的異常處理類捕捉到,並顯示出我自定義的異常顯示頁面:

如何讓Spring MVC顯示自定義的404 Not Found頁面

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:


如何讓Spring MVC顯示自定義的404 Not Found頁面

如何讓Spring MVC顯示自定義的404 Not Found頁面


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2212341/,如需轉載,請註明出處,否則將追究法律責任。

相關文章