您好,登錄后才能下訂單哦!
這篇文章主要介紹了SpringMVC基于配置的異常處理器怎么用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇SpringMVC基于配置的異常處理器怎么用文章都會有所收獲,下面我們一起來看看吧。
SpringMVC 提供了一個處理控制器方法執行過程中所出現的異常的接口:HandlerExceptionResolver。
HandlerExceptionResolver接口的實現類有:
DefaultHandlerExceptionResolver,這個是默認使用的處理器,之前遇到的一些異常,其實springMVC 都已經給我們處理過了。
SimpleMappingExceptionResolver,這個可以讓我們自定義異常處理。當出現指定的異常,可以設置返回新的視圖。
使用SimpleMappingExceptionResolver,在springMVC的配置文件中:
<!--配置異常處理--> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.ArithmeticException">error</prop> </props> </property> </bean>
示例里使用的一個處理運算異常的類ArithmeticException,里面的值 error 表示異常后跳轉的視圖。
對應的,新建一個error.html頁:
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>error</title> </head> <body> 出現錯誤 </body> </html>
接下來,造一個異常:
@RequestMapping("/testExceptionHandler") public String testExceptionHandler() { System.out.println(1/0); return "success"; }
正常情況下這個處理器會跳轉到 success 頁,但是里面有個 1/0的異常,所以會按照配置跳轉到 error 頁。
重新部署,測試一下,訪問http://localhost:8080/springmvc/testExceptionHandler:
成功跳轉到 error 頁。
此外,還可以繼續屬性exceptionAttribute,設置一個key用來存放異常信息,默認存在當前的請求域中:
<!--配置異常處理--> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.ArithmeticException">error</prop> </props> </property> <!--exceptionAttribute屬性設置一個屬性名,將出現的異常信息在請求域中進行共享--> <property name="exceptionAttribute" value="ex"></property> </bean>
那么在 error 頁中就可以使用到ex來獲取異常信息了。
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>error</title> </head> <body> 出現錯誤 <p th:text="${ex}"></p> </body> </html>
重新部署,刷新下頁面:
springmvc 同樣也提供了一套注解,通過注解方式也可以實現上述的異常處理。
新建一個控制器 ExceptionController:
//@ControllerAdvice將當前類標識為異常處理的組件 @ControllerAdvice public class ExceptionController { //@ExceptionHandler 用于設置所標識方法處理的異常 @ExceptionHandler(value = {ArithmeticException.class, NullPointerException.class}) public String testException(Exception ex, Model model){ // ex表示當前請求處理中出現的異常對象,放到請求域中 model.addAttribute("ex", ex); return "error"; } }
@ControllerAdvice將當前類標識為異常處理的組件。
ex表示當前請求處理中出現的異常對象,用Model放到請求域中。
現在注釋掉配置文件里的處理器,重新部署下,刷新http://localhost:8080/springmvc/testExceptionHandler:
依然可以。
關于“SpringMVC基于配置的異常處理器怎么用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“SpringMVC基于配置的異常處理器怎么用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。