SpringMVC統一異常處理三種方法詳解_mssql2008

來源:腳本之家  責任編輯:小易  

ajax訪問不會返回你配置的錯誤頁面,需要你自定義實現異常類(基于ajax請求),并且將異常通過response輸出www.13333515.buzz防采集請勿采集本網。

這篇文章主要介紹了SpringMVC-統一異常處理三種方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Spring MVC 3.2 M1 將引入對異步請求處理的支持,基于 Servlet 3.0 規范。盡管該版本還沒發布,你可以在這里看到包含的改進。簡單預覽一下: 一個控制器方法可通過返回 Callable 來完成異步處理

在 Spring MVC 應用的開發中,不管是對底層數據庫操作,還是業務層或控制層操作,都會不可避免地遇到各種可預知的、不可預知的異常需要處理。

應該是sql語句沒寫對,你先拿select語句到數據庫里執行看是否報錯。

如果每個過程都單獨處理異常,那么系統的代碼耦合度高,工作量大且不好統一,以后維護的工作量也很大。

看一下accept頭,是不是有些請求沒有帶Accept:\"application/json\",導致SpringMVC無法路由到處理json的邏輯,你試一下把正常的和異常的請求頭都打印出來。

如果能將所有類型的異常處理從各層中解耦出來,這樣既保證了相關處理過程的功能單一,又實現了異常信息的統一處理和維護。

這個異常在網上搜到兩個答案,一個是說缺少jsonjack包,這個我肯定是包含了,這個錯誤是偶爾出現的,一般都能正常返回json數據,另一個是說返 回的對象里沒有get方法,這個也應該不是,返回的都

幸運的是,Spring MVC 框架支持這樣的實現。Spring MVC 統一異常處理有以下 3 種方式: 使用 Spring MVC 提供的簡單異常處理器 SimpleMappingExceptionResolver。 實現 Spring 的異常處理接口 HandlerExceptionResolver 自定義自己的異常處理器。 使用 @ExceptionHandler 注解實現異常處理

一個是說缺少jsonjack包,這個我肯定是包含了,這個錯誤是偶爾出現的,一般都能正常返回json數據

本節主要根據這 3 種處理方式講解 Spring MVC 應用的異常統一處理。

Spring MVC使用SimpleMappingExceptionResolver類異常處理

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring一beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 使用掃描機制掃描包 --> <context:component-scan base-package="controller" /> <context:component-scan base-package="service" /> <context:component-scan base-package="dao" /> <!-- 配置視圖解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!--前綴 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后綴 --> <property name="suffix" value=".jsp" /> </bean> <!--SimpleMappingExceptionResolver(異常類與 View 的對應關系) --> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!-- 定義默認的異常處理頁面,當該異常類型注冊時使用 --> <property name="defaultErrorView" value="error"></property> <!-- 定義異常處理頁面用來獲取異常信息的變量名,默認名為exception --> <property name="exceptionAttribute" value="ex"></property> <!-- 定義需要特殊處理的異常,用類名或完全路徑名作為key,異常頁名作為值 --> <property name="exceptionMappings"> <props> <prop key="exception.MyException">my-error</prop> <prop key="java.sql.SQLException">sql-error</prop> <!-- 在這里還可以繼續擴展對不同異常類型的處理 --> </props> </property> </bean></beans>

Spring MVC使用HandlerExceptionResolver接口異常處理

package exception;import java.sql.SQLException;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerExceptionResolver;import org.springframework.web.servlet.ModelAndView;public class MyExceptionHandler implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) { Map<String, Object> model = new HashMap<String, Object>(); model.put("ex", arg3); // 根據不同錯誤轉向不同頁面(統一處理),即異常與View的對應關系 if (arg3 instanceof MyException) { return new ModelAndView("my-error", model); } else if (arg3 instanceof SQLException) { return new ModelAndView("sql-error", model); } else { return new ModelAndView("error", model); } }}

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring一beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 使用掃描機制掃描包 --> <context:component-scan base-package="controller" /> <context:component-scan base-package="service" /> <context:component-scan base-package="dao" /> <!-- 配置視圖解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!--前綴 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后綴 --> <property name="suffix" value=".jsp" /> </bean> <!--托管MyExceptionHandler--> <bean class="exception.MyExceptionHandler"/></beans>

Spring MVC使用@ExceptionHandler注解異常處理

package controller;import java.sql.SQLException;import javax.servlet.http.HttpServletRequest;import org.springframework.web.bind.annotation.ExceptionHandler;import exception.MyException;public class BaseController { /** 基于@ExceptionHandler異常處理 */ @ExceptionHandler public String exception(HttpServletRequest request, Exception ex) { request.setAttribute("ex", ex); // 根據不同錯誤轉向不同頁面,即異常與view的對應關系 if (ex instanceof SQLException) { return "sql-error"; } else if (ex instanceof MyException) { return "my-error"; } else { return "error"; } }}

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring一beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 使用掃描機制掃描包 --> <context:component-scan base-package="controller" /> <context:component-scan base-package="service" /> <context:component-scan base-package="dao" /> <!-- 配置視圖解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!--前綴 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后綴 --> <property name="suffix" value=".jsp" /> </bean></beans>

通過Spring mvc框架提供的SimpleMappingExceptionResolver來集中處理,該類可以捕獲所有控制器拋出的異常,并將它映射到配置的視圖中。用法配置如下:class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">failureshowDBErrorshowError內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • springmvc級聯屬性處理無法轉換異常問題解決
  • springmvc統一異常處理實例代碼
  • spring mvc異常處理機制示例詳解
  • spring mvc controller返回值及異常的統一處理方法
  • springmvc異常處理知識點總結
  • springmvc如何進行異常處理
  • spring mvc中異常處理的三種方式
  • 基于springmvc的全局異常處理器介紹
  • 詳解使用spring mvc統一異常處理實戰
  • sql server 2008安裝失敗的解決辦法 徹底卸載老版本!
  • sql server 2008 數據庫優化常用腳本
  • 通過sqlserver 2008 操作 mysql的方法
  • sql server 2008中的apply運算符使用方法
  • sql server2008中刪除重復記錄的方法分享
  • sqlserver 2008 :error 40出現連接錯誤的解決方法
  • sql server 2008存儲結構之gam、sgam介紹
  • 利用java實現des加密算法
  • sql server 2008 r2數據庫鏡像部署圖文教程
  • sql server 2008 r2——查找最小nindex,nindex存在而nindex+1不存
  • spring mvc 異常如何處理
  • SpringMVC統一異常處理,報異常后不跳轉至設置的錯誤頁面
  • spring mvc 的這個異常是什么原因導致的
  • spring mvc 異常如何處理
  • spring 異常統一處理,能處理異步請求嗎
  • spring mvc的一個問題 有異常 有方法截圖 求解?
  • spring mvc 的這個異常是什么原因導致的
  • spring mvc 的這個異常是什么原因導致的
  • spring mvc 的這個異常是什么原因導致的
  • 關于spring的一個異常,怎么解決
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess數據庫文摘數據庫其它首頁mssql2008springmvc級聯屬性處理無法轉換異常問題解決springmvc統一異常處理實例代碼spring mvc異常處理機制示例詳解spring mvc controller返回值及異常的統一處理方法springmvc異常處理知識點總結springmvc如何進行異常處理spring mvc中異常處理的三種方式基于springmvc的全局異常處理器介紹詳解使用spring mvc統一異常處理實戰sql server 2008安裝失敗的解決辦法 徹底卸載老版本!sql server 2008 數據庫優化常用腳本通過sqlserver 2008 操作 mysql的方法sql server 2008中的apply運算符使用方法sql server2008中刪除重復記錄的方法分享sqlserver 2008 :error 40出現連接錯誤的解決方法sql server 2008存儲結構之gam、sgam介紹利用java實現des加密算法sql server 2008 r2數據庫鏡像部署圖文教程sql server 2008完全卸載方法(其sql server 2008 安裝和配置圖解在與 sql server 建立連接時出現sql server 2008 r2 超詳細安裝圖安裝sql server 2008時的4個常見sql server 2008登錄錯誤:無法連sql server 2008 阻止保存要求重sqlserver 2008將數據導出到sql腳sql server 2008 清空刪除日志文圖文詳解sql server 2008r2使用教sql server 2008 數據庫鏡像部署實例之一sql2008中sql應用之- 死鎖(deadlocking)sql server 2008用""sa""登錄失敗,啟用"sqlserver 2008中的代碼安全(一) 存儲過sql server 2008 用戶 nt authority\iusr關于sql server 2008忘記sa密碼修改sa密碼如何把excel數據導入到sql2008數據庫的實sql server2008數據庫遷移的兩種方法設置sql server 2008 r2的身份驗證模式的sql server 2008數據庫引擎詳細介紹
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果