SpringMVC學(xué)習(xí)之JSON和全局異常處理詳解_第1頁
SpringMVC學(xué)習(xí)之JSON和全局異常處理詳解_第2頁
SpringMVC學(xué)習(xí)之JSON和全局異常處理詳解_第3頁
SpringMVC學(xué)習(xí)之JSON和全局異常處理詳解_第4頁
SpringMVC學(xué)習(xí)之JSON和全局異常處理詳解_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第SpringMVC學(xué)習(xí)之JSON和全局異常處理詳解目錄1.為什么要全局異常處理2.異常處理思路3.SpringMVC異常分類4.綜合案例4.1SpringMVC自帶的簡單異常處理器4.2通過HandlerExceptionResovler接口實現(xiàn)全局異常4.3使用@ControllerAdvice+@ExceptionHandler實現(xiàn)全局異常4.4響應(yīng)封裝類4.4.1創(chuàng)建自定義異常類BusinessException4.4.2創(chuàng)建響應(yīng)枚舉類JsonResponseStatus4.4.3創(chuàng)建響應(yīng)封裝類JsonResponseBody總結(jié)

1.為什么要全局異常處理

我們知道,系統(tǒng)中異常包括:編譯時異常和運行時異常RuntimeException,前者通過捕獲異常從而獲取異常信息,后者主要通過規(guī)范代碼開發(fā)、測試通過手段減少運行時異常的發(fā)生。在開發(fā)中,不管是dao層、service層還是controller層,都有可能拋出異常,在springmvc中,能將所有類型的異常處理從各處理過程解耦出來,既保證了相關(guān)處理過程的功能較單一,也實現(xiàn)了異常信息的統(tǒng)一處理和維護(hù)。

2.異常處理思路

系統(tǒng)的dao、service、controller出現(xiàn)異常都通過throwsException向上拋出,最后由springmvc前端控制器交由異常處理器進(jìn)行異常處理。springmvc提供全局異常處理器(一個系統(tǒng)只有一個異常處理器)進(jìn)行統(tǒng)一異常處理。

3.SpringMVC異常分類

1)使用SpringMVC提供的簡單異常處理器SimpleMappingExceptionResolver;

2)實現(xiàn)Spring的異常處理接口HandlerExceptionResolver自定義自己的異常處理器;

3)使用@ControllerAdvice+@ExceptionHandler

4.綜合案例

4.1SpringMVC自帶的簡單異常處理器

SpringMVC中自帶了一個異常處理器叫SimpleMappingExceptionResolver,該處理器實現(xiàn)了HandlerExceptionResolver接口,全局異常處理器都需要實現(xiàn)該接口

!--springmvc提供的簡單異常處理器--

bean

!--定義默認(rèn)的異常處理頁面--

propertyname="defaultErrorView"value="error"/

!--定義異常處理頁面用來獲取異常信息的變量名,也可不定義,默認(rèn)名為exception--

propertyname="exceptionAttribute"value="ex"/

!--定義需要特殊處理的異常,這是重要點--

propertyname="exceptionMappings"

props

propkey="java.lang.RuntimeException"error/prop

/props

!--還可以定義其他的自定義異常--

/property

/bean

注:頁面跳轉(zhuǎn)由SpringMVC來接管了,所以此處的定義默認(rèn)的異常處理頁面都應(yīng)該配置成邏輯視圖名。

4.2通過HandlerExceptionResovler接口實現(xiàn)全局異常

@Component

publicclassGlobalExceptionHandlerimplementsHandlerExceptionResolver{

@Override

publicModelAndViewresolveException(HttpServletRequesthttpServletRequest,

HttpServletResponsehttpServletResponse,

Objecto,Exceptione){

}

注:

1)通過instanceof判斷異常類型

2)通過設(shè)置mv.setView(newMappingJackson2JsonView())方式返回JSON數(shù)據(jù);

4.3使用@ControllerAdvice+@ExceptionHandler實現(xiàn)全局異常

@ControllerAdvice

publicclassGlobalExceptionResolver{

@ExceptionHandler(value=RuntimeException.class)

publicModelAndViewhandler(Exceptione){

}

4.4響應(yīng)封裝類

4.4.1創(chuàng)建自定義異常類BusinessException

BusinessException自定義異常類將繼承RuntimeException異常,該異常類用于處理在程序代碼運行過程所產(chǎn)生的運行時業(yè)務(wù)異常信息。

4.4.2創(chuàng)建響應(yīng)枚舉類JsonResponseStatus

JsonResponseStatus響應(yīng)枚舉類用于自定義錯誤碼

4.4.3創(chuàng)建響應(yīng)封裝類JsonResponseBody

JsonResponseBody響應(yīng)封裝類用于以JSON的形式統(tǒng)一輸出錯誤信息。

1.添加jackson相關(guān)依賴

dependency

groupIdcom.fasterxml.jackson.core/groupId

artifactIdjackson-databind/artifactId

version2.9.3/version

/dependency

dependency

groupIdcom.fasterxml.jackson.core/groupId

artifactIdjackson-core/artifactId

version2.9.3/version

/dependency

dependency

groupIdcom.fasterxml.jackson.core/groupId

artifactIdjackson-annotations/artifactId

version2.9.3/version

/dependency

2.在springmvc-servlet.xml的mvc:annotation-driven標(biāo)簽下添加如下內(nèi)容

!--但是,從spring3.1開始DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter的使用已經(jīng)過時--

!--spring3.1開始我們應(yīng)該用RequestMappingHandlerMapping來替換DefaultAnnotationHandlerMapping,--

!--spring3.1開始我們應(yīng)該用用RequestMappingHandlerAdapter來替換AnnotationMethodHandlerAdapter--

bean

propertyname="messageConverters"

list

refbean="mappingJackson2HttpMessageConverter"/

/list

/property

/bean

beanid="mappingJackson2HttpMessageConverter"

!--處理中文亂碼以及避免IE執(zhí)行AJAX時,返回JSON出現(xiàn)下載文件--

propertyname="supportedMediaTypes"

list

valuetext/html;charset=UTF-8/value

valuetext/json;charset=UTF-8/value

valueapplication/json;charset=UTF-8/value

/list

/property

/bean

3.在請求處理方法中添加@ResponseBody注解,將返回結(jié)果直接轉(zhuǎn)換成JSON

@RequestMapping("/loadFwxxToJson")

@ResponseBody

publicFwxxloadFwxxToJson(@Mod

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論